web-dev-qa-db-fra.com

Elastic Search: comment voir les données indexées

J'ai eu un problème avec ElasticSearch et Rails, où certaines données n'étaient pas indexées correctement en raison d'attr_protected. Où Elastic Search stocke-t-il les données indexées? Il serait utile de vérifier si les données indexées sont fausses.

Vérifier le mappage avec Tire.index('models').mapping n'aide pas, le champ est répertorié.

96
Robin

Le moyen le plus simple d'explorer votre cluster ElasticSearch consiste probablement à utiliser elasticsearch-head .

Vous pouvez l'installer en faisant:

cd elasticsearch/
./bin/plugin -install mobz/elasticsearch-head

Puis (en supposant qu'ElasticSearch soit déjà en cours d'exécution sur votre ordinateur local), ouvrez une fenêtre de navigateur pour:

http://localhost:9200/_plugin/head/

Sinon, vous pouvez simplement utiliser curl à partir de la ligne de commande, par exemple:

Vérifiez le mappage pour un index:

curl -XGET 'http://127.0.0.1:9200/my_index/_mapping?pretty=1' 

Obtenez des exemples de documents:

curl -XGET 'http://127.0.0.1:9200/my_index/_search?pretty=1' 

Voir les termes réels stockés dans un champ particulier (c.-à-d. Comment ce champ a été analysé):

curl -XGET 'http://127.0.0.1:9200/my_index/_search?pretty=1'  -d '
 {
    "facets" : {
       "my_terms" : {
          "terms" : {
             "size" : 50,
             "field" : "foo"
          }
       }
    }
 }

Plus disponible ici: http://www.elasticsearch.org/guide

MISE À JOUR: plugin Sense dans Marvel

Le moyen le plus simple d'écrire des commandes de style curl- pour Elasticsearch est le plugin Sense dans Marvel .

Il est livré avec une mise en évidence de la source, une jolie mise en retrait et une saisie semi-automatique.

Remarque: Sense était à l'origine un plug-in autonome chrome mais fait maintenant partie du projet Marvel) .

165
DrTech

Le moyen le plus simple de voir vos données indexées est de les afficher dans votre navigateur. Aucun téléchargement ou installation nécessaire.

Je vais supposer que votre hôte elasticsearch est http://127.0.0.1:9200.

Étape 1

Aller vers http://127.0.0.1:9200/_cat/indices?v pour lister vos index. Vous verrez quelque chose comme ça:

enter image description here

Étape 2

Essayez d’accéder à l’index souhaité: http://127.0.0.1:9200/products_development_20160517164519304

La sortie ressemblera à ceci:

enter image description here

Notez le aliases, ce qui signifie que nous pouvons également accéder à l'index à l'adresse: http://127.0.0.1:9200/products_development

Étape 3

Aller vers http://127.0.0.1:9200/products_development/_search?pretty=1 pour voir vos données:

enter image description here

31
Jan Klimo

navigateur de données ElasticSearch

Recherche, graphiques, configuration en un clic ....

10
Oleg

Solution d'agrégation

Résoudre le problème en regroupant les données - les réponses utilisées par DrTech pour gérer cela, mais seront obsolètes conformément à la référence Elasticsearch 1.0.

Warning

Facets are deprecated and will be removed in a future release. You are encouraged to
migrate to aggregations instead.

Les facettes sont remplacées par des agrégats - Introduits de manière accessible dans Elasticsearch Guide - qui charge un exemple de sens. .

Solution courte

La solution est la même, sauf que les agrégations nécessitent aggs au lieu de facets et avec un nombre égal à 0, ce qui fixe la limite à un nombre entier maximal - L'exemple de code nécessite le plug-in Marvel

# Basic aggregation
GET /houses/occupier/_search?search_type=count
{
    "aggs" : {
        "indexed_occupier_names" : {    <= Whatever you want this to be
            "terms" : {
              "field" : "first_name",    <= Name of the field you want to aggregate
              "size" : 0
            }
        }
    }
}

Solution complète

Voici le code Sense pour le tester - exemple d'index de maisons, avec un type d'occupant et un champ prénom_nom:

DELETE /houses

# Index example docs
POST /houses/occupier/_bulk
{ "index": {}}
{ "first_name": "john" }
{ "index": {}}
{ "first_name": "john" }
{ "index": {}}
{ "first_name": "mark" }


# Basic aggregation
GET /houses/occupier/_search?search_type=count
{
    "aggs" : {
        "indexed_occupier_names" : {
            "terms" : {
              "field" : "first_name",
              "size" : 0
            }
        }
    }
}

Réponse

Réponse indiquant le code d'agrégation pertinent. Avec deux clés dans l'index, John et Mark.

    ....
    "aggregations": {
      "indexed_occupier_names": {
         "buckets": [
            {
               "key": "john",     
               "doc_count": 2     <= 2 documents matching
            },                        
            {
               "key": "mark",
               "doc_count": 1     <= 1 document matching
            }
         ]
      }
   }
   ....
5
not a patch

Un outil qui m'aide beaucoup à déboguer ElasticSearch est ElasticHQ . Fondamentalement, c'est un fichier HTML avec du JavaScript. Pas besoin d'installer n'importe où, et encore moins dans ES: téléchargez-le, décompressez-le et ouvrez le fichier HTML avec un navigateur.

Pas sûr que ce soit le meilleur outil pour les gros utilisateurs d’ES. Pourtant, il est très pratique pour quiconque est pressé de voir les entrées.

4
brandizzi

Suivant l'exemple de @JanKlimo, sur le terminal, il vous suffit de:

pour voir tous les index: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

voir le contenu de Index products_development_20160517164519304: $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'

1
koolhead17

Si vous utilisez Google Chrome, vous pouvez simplement utiliser cette extension nommée Sense. C’est également un outil si vous utilisez Marvel.

https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig

1
Sudhanshu Gaur

Kibana est également une bonne solution. Il s’agit d’une plate-forme de visualisation de données pour Elastic.Si elle est installée, elle s’exécute par défaut sur le port 5601.

Parmi les nombreuses choses qu'il fournit. Il a "Outils de développement" où nous pouvons faire votre débogage.

Par exemple, vous pouvez vérifier ici vos index disponibles en utilisant la commande

GET /_cat/indices
0
gd vigneshwar