Упругий поиск: как увидеть индексированные данные
У меня возникла проблема с ElasticSearch и Rails, где некоторые данные не были проиндексированы должным образом из-за attr_protected. Где Elastic Search хранит индексированные данные? Было бы полезно проверить, неверны ли фактические индексированные данные.
Проверка отображения с помощью Tire.index('models').mapping
не помогает, поле отображается.
Ответы
Ответ 1
Вероятно, самый простой способ изучить ваш кластер ElasticSearch - использовать elasticsearch-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
UPDATE: плагин Sense в Marvel
Самым простым способом написания команд curl
-style для Elasticsearch является Sense plugin in Marvel.
Он поставляется с подсветкой источника, довольно отступом и автозаполнением.
Примечание: Смысл был первоначально автономным хром-плагином, но теперь является частью проекта Marvel.
Ответ 2
Абсолютно самый простой способ увидеть ваши индексированные данные - просмотреть его в своем браузере. Не требуется загрузка или установка.
Я собираюсь предположить, что ваш хост elasticsearch http://127.0.0.1:9200
.
Шаг 1
Перейдите к http://127.0.0.1:9200/_cat/indices?v
, чтобы перечислить свои индексы. Вы увидите что-то вроде этого:
![введите описание изображения здесь]()
Шаг 2
Попробуйте получить желаемый индекс:
http://127.0.0.1:9200/products_development_20160517164519304
Результат будет выглядеть примерно так:
![введите описание изображения здесь]()
Обратите внимание на aliases
, что означает, что мы можем также получить доступ к индексу по адресу:
http://127.0.0.1:9200/products_development
Шаг 3
Перейдите в http://127.0.0.1:9200/products_development/_search?pretty=1
, чтобы просмотреть свои данные:
![введите описание изображения здесь]()
Ответ 3
браузер данных ElasticSearch
Поиск, диаграммы, настройка одним нажатием....
Ответ 4
Агрегатное решение
Решение проблемы путем группировки данных - 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 Guide, которое загружает пример в смысл..
Краткое решение
Решение такое же, за исключением того, что для агрегации требуется aggs
вместо facets
и с count of 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
}
]
}
}
....
Ответ 5
Инструмент, который помогает мне отлаживать ElasticSearch, ElasticHQ. В принципе, это HTML файл с некоторым JavaScript. Не нужно устанавливать нигде, не говоря уже о самом ES: просто скачайте его, распакуйте int и откройте файл HTML с помощью браузера.
Не уверен, что это лучший инструмент для тяжелых пользователей ES. Тем не менее, это действительно практично для тех, кто спешит увидеть записи.
Ответ 6
Если вы используете Google Chrome, вы можете просто использовать это расширение с именем Sense, это также инструмент, если вы используете Marvel.
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig
Ответ 7
Следуя примеру @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'