Elasticsearch - Recherche
Alasta 11 Mars 2017 bigdata elk elasticsearch cli
Description : Voici quelques requêtes pour faire des recherches dans ES en cli.
ES v5:
Recherche dans plusieurs index identifiés, avec filtre des champs de sortie
curl -XGET http://127.0.0.1:9200/logstash-rproxy-2017.02.20,logstash-rproxy-2017.02.21,logstash-rproxy-2017.02.23/_search?pretty=y -d '
{
"_source" : ["URL", "user_agent","user"],
"query": {
"bool": {
"must": [
{ "match": { "URL.raw": "/public" }},
{ "match": { "application": "extranet1" }}
]
}
}
}'
Recherche dans tous les index avec un filtre sur la date et champs de sortie
curl -XGET http://127.0.0.1:9200/logstash-rproxy-*/_search?pretty=y -d '
{
"_source" : ["URL", "user_agent","user"],
"query": {
"bool": {
"must": [
{ "match": { "URL.raw": "/public" }},
{ "match": { "application": "extranet1" }}
],
"must": [
{
"range": {
"@timestamp" : {
"gte": "18/12/2016",
"lte": "now",
"format": "dd/MM/yyyy||yyyy"
}
}
}
]
}
}
}'
Recherche avec filtre dans l’URL
curl -XGET 'localhost:9200/logstash-rp-2017.02.01/_search?q=unique_id=O97KxMCoAncAAIi9easABHjI9&pretty=true'
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 13.215996,
"hits" : [
{
"_index" : "logstash-rp-2017.02.01",
"_type" : "syslog",
"_id" : "AVqjbBC52M9ghcpEcwy3",
"_score" : 13.215996,
"_source" : {
....
Recherche avec filtre et filtre de sortie dans l’URL
curl -XGET 'localhost:9200/logstash-rp-2017.02.01/_search?q=unique_id=09ixMCkL5cAAIi9easJUYBx&pretty=true&filter_path=hits.hits._source.program,hits.hits._source.port'
{
"hits" : {
"hits" : [
{
"_source" : {
"program" : "/opt/sol/bin/rp",
"port" : 56031
}
}
]
}
}
Recherche en fuzzy/proximiyté
curl -XGET http://127.0.0.1:9200/logstash-rproxy-2017.02.20,logstash-rproxy-2017.02.21,logstash-rproxy-2017.02.23/_search?pretty=y -d '
{
"query": {
"bool": {
"must": [
{ "fuzzy": { "URL.raw": "/pulic" }},
{ "match": { "application": "extranet1" }}
]
}
}
}'
Note : ES limite à 10 réponses par défaut (possibilité de à 10000 max avec le paramétre size), il peut-être intéressant de connaître le nombre total de réponses en remplaçant _search par _count.
ES v2 :
Recherche dans tous les index avec un filtre sur la date et champs de sortie
curl -XGET http://127.0.0.1:9200/_search?pretty=y -d '
{
"fields" : ["URL", "user_agent","user"],
"query": {
"bool": {
"must": [
{ "match": { "URL.raw": "/public" }},
{ "match": { "application": "extranet1" }}
],
"must": [
{
"range": {
"@timestamp" : {
"gte": "18/12/2016",
"lte": "now",
"format": "dd/MM/yyyy||yyyy"
}
}
}
]
}
}
}'
Recherche dans plusieurs index identifiés, avec filtre des champs de sortie
curl -XGET http://127.0.0.1:9200/logstash-rproxy-2016.12.20,logstash-rproxy-2016.12.19,logstash-rproxy-2016.12.18/_search?pretty=y -d '
{
"fields" : ["URL", "user_agent","user"],
"query": {
"bool": {
"must": [
{ "match": { "URL.raw": "/public" }},
{ "match": { "application": "extranet1" }}
]
}
}
}'