Эластичный поиск: как просмотреть проиндексированные данные - PullRequest
95 голосов
/ 21 января 2012

У меня была проблема с ElasticSearch и Rails, где некоторые данные не были проиндексированы должным образом из-за attr_protected.Где Elastic Search хранит проиндексированные данные?Было бы полезно проверить, не являются ли действительные индексированные данные неправильными.

Проверка соответствия с помощью Tire.index('models').mapping не помогает, поле отображается в списке.

Ответы [ 8 ]

165 голосов
/ 22 января 2012

Вероятно, самый простой способ изучить кластер ElasticSearch - это использовать asticsearch-head .

Вы можете установить его, выполнив:

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

Затем (при условии, что ElasticSearch уже запущен на вашем локальном компьютере), откройте окно браузера, чтобы:

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

В качестве альтернативы, вы можете просто использовать curl из командной строки, например:

Проверьте отображение индекса:

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

Получите несколько образцов документов:

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

См. Фактические термины, хранящиеся в определенном поле (то есть, как это поле было проанализировано):

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

Больше доступно здесь: http://www.elasticsearch.org/guide

ОБНОВЛЕНИЕ: плагин Sense в Marvel

Самым простым способом написания команд в стиле curl для Elasticsearch является плагин Sense в Marvel .

Он поставляется с подсветкой источника, довольно большим отступом и автозаполнением.

Примечание: Изначально Sense был автономным хромированным плагином, но теперь является частью проекта Marvel .

31 голосов
/ 17 мая 2016

Абсолютно самый простой способ увидеть ваши проиндексированные данные - это просмотреть их в браузере. Загрузка и установка не требуются.

Я собираюсь предположить, что ваш хостasticsearch - http://127.0.0.1:9200.

Шаг 1

Перейдите к http://127.0.0.1:9200/_cat/indices?v, чтобы составить список своих индексов.Вы увидите что-то вроде этого:

enter image description here

Шаг 2

Попробуйте получить доступ к нужному индексу: http://127.0.0.1:9200/products_development_20160517164519304

Вывод будет выглядеть примерно так:

enter image description here

Обратите внимание на aliases, то есть мы также можем получить доступ киндекс в: http://127.0.0.1:9200/products_development

Шаг 3

Перейдите к http://127.0.0.1:9200/products_development/_search?pretty=1, чтобы просмотреть ваши данные:

enter image description here

10 голосов
/ 07 декабря 2012

Браузер данных ElasticSearch

Поиск, графики, настройка в один клик ....

5 голосов
/ 06 июля 2014

Агрегационный раствор

Решение проблемы путем группировки данных - в ответе DrTech использовались аспекты для управления этим, но будет устаревшим в соответствии со ссылкой Elasticsearch 1.0.

Warning

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

Фасеты заменены агрегатами - Представлено доступным способом в Руководстве по Elasticsearch - которое загружает пример в смысл. .

Краткое решение

Решение такое же, за исключением того, что для агрегации требуется aggs вместо facets и с счетчиком , равным 0, который устанавливает ограничение на максимальное целое число - , для примера кода требуется плагин 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
            }
        }
    }
}

Полное решение

Вот код Sense для тестирования - пример индекса домов, с типом жильца и полем first_name:

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
            }
        }
    }
}

Ответ

Ответ, показывающий соответствующий код агрегации. С двумя ключами в индексе, Джон и Марк.

    ....
    "aggregations": {
      "indexed_occupier_names": {
         "buckets": [
            {
               "key": "john",     
               "doc_count": 2     <= 2 documents matching
            },                        
            {
               "key": "mark",
               "doc_count": 1     <= 1 document matching
            }
         ]
      }
   }
   ....
4 голосов
/ 15 марта 2016

Инструмент, который мне очень помогает для отладки ElasticSearch: ElasticHQ .По сути, это HTML-файл с некоторым JavaScript.Не нужно устанавливать где-либо, не говоря уже о самой ES: просто загрузите его, разархивируйте int и откройте HTML-файл с помощью браузера.

Не уверен, что это лучший инструмент для опытных пользователей ES.Тем не менее, это действительно практично для тех, кто спешит увидеть записи.

1 голос
/ 10 сентября 2016

Следуя примеру @JanKlimo, на терминале все, что вам нужно сделать, это:

чтобы увидеть весь индекс: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

чтобы увидеть содержание индекса products_development_20160517164519304: $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'

1 голос
/ 30 июля 2016

Если вы используете Google Chrome, тогда вы можете просто использовать это расширение с именем Sense, это также инструмент, если вы используете Marvel.

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

0 голосов
/ 23 марта 2019

Кибана также является хорошим решением.Это платформа визуализации данных для Elastic. Если она установлена ​​по умолчанию на порту 5601.

Из множества предоставляемых возможностей.Он имеет «Инструменты разработчика», где мы можем выполнить вашу отладку.

Например, вы можете проверить доступные индексы здесь, используя команду

GET /_cat/indices
...