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é.
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
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) .
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:
Étape 2
Essayez d’accéder à l’index souhaité: http://127.0.0.1:9200/products_development_20160517164519304
La sortie ressemblera à ceci:
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:
navigateur de données ElasticSearch
Recherche, graphiques, configuration en un clic ....
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. .
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
}
}
}
}
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 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
}
]
}
}
....
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.
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'
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
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