web-dev-qa-db-fra.com

Représentation d'une requête Kibana sous forme REST, curl

J'ai une configuration serveur Kibana dans une configuration classique WAPITI , interrogeant une instance Elasticsearch .

J'utilise la console Kibana pour exécuter des requêtes sophistiquées sur elasticsearch. Je voudrais utiliser certaines de ces requêtes dans le linem de commande en utilisant cURL ou tout autre outil http.

Comment puis-je convertir une recherche Kibana en direct, cURL-like REST call to elasticsearch ?

15
Adam Matan

Au bas de votre visualisation, il y a un petit curseur sur lequel vous pouvez cliquer pour afficher plus de détails sur la requête sous-jacente:

View more info

Ensuite, vous pouvez cliquer sur le bouton "Demande" afin d'afficher la requête sous-jacente, que vous pouvez copier/coller et faire ce qui vous convient.

enter image description here

[~ # ~] mise à jour [~ # ~]

Ensuite, vous pouvez copier/coller la requête à partir de la zone de texte "Demande" et simplement la coller dans une boucle comme celle-ci:

curl -XPOST localhost:9200/your_index/your_type/_search -d '{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "analyze_wildcard": true,
          "query": "blablabla AND blablabla"
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "@timestamp": {
                  "gte": 1439762400000,
                  "lte": 1439848799999
                }
              }
            }
          ],
          "must_not": []
        }
      }
    }
  },
  "highlight": {
    "pre_tags": [
      "@kibana-highlighted-field@"
    ],
    "post_tags": [
      "@/kibana-highlighted-field@"
    ],
    "fields": {
      "*": {}
    }
  },
  "size": 420,
  "sort": {
    "@timestamp": "desc"
  },
  "aggs": {
    "2": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "30m",
        "pre_zone": "+02:00",
        "pre_zone_adjust_large_interval": true,
        "min_doc_count": 0,
        "extended_bounds": {
          "min": 1439762400000,
          "max": 1439848799999
        }
      }
    }
  },
  "fields": [
    "*",
    "_source"
  ],
  "script_fields": {},
  "fielddata_fields": [
    "@timestamp"
  ]
}'

Vous devrez peut-être modifier quelques éléments (comme les balises de surbrillance avant/après, etc.)

27
Val

Si vous êtes en ligne à l'aide d'un navigateur Chrome Chrome, vous pouvez accéder à votre tableau de bord Kibana, ouvrir la console développeur et écrire votre requête tout en ayant l'onglet Network ouvert dans la console développeur. Lorsque vous recherchez votre requête dans le tableau de bord Kibana, vous verrez la demande apparaître dans la console du développeur. Là, vous pouvez "cliquer avec le bouton droit" et sélectionner Copy as cURL, qui copiera la commande curl dans votre presse-papiers. Notez que les informations d'identification de votre authentification de base peuvent également être copiées. Faites donc attention où vous le collez.

12
xh3b4sd

Une autre option serait d'interroger Elastic Search à l'aide de requêtes lucene (même syntaxe que Kibana utilise) à l'aide de l'API de recherche ES query_string requêtes:

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

Tiré de l'un des exemples de doc, vous interrogeriez ES en utilisant quelque chose comme ceci:

GET /_search
{
    "query": {
        "query_string" : {
            "default_field" : "content",
            "query" : "this AND that OR thus"
        }
    }
}
0
Vincent de Lagabbe