Под поиском понимается поиск документов в индексе или нескольких индексах. Простой поиск представляет собой запрос GET API к конечной точке _search. Поисковый запрос может быть задан как в строке запроса, так и в теле запроса.
Примеры
При поиске любых документов в этом индексе, если не указаны параметры поиска, каждый документ является хитом, и по умолчанию будет возвращено 10 хитов.
1 | GET my_documents/_search |
В ответ на поисковый запрос возвращается JSON-объект. Код ответа 200 означает, что запрос был успешно выполнен.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "took" : 1, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 1.0, "hits" : [ ... ] } } |
Примечания и полезные сведения
- Распределенный поиск - сложная задача, и каждый шард индекса должен быть прочесан на предмет совпадений, а затем эти совпадения объединены в единый отсортированный список в качестве окончательного результата.
- Поиск состоит из двух фаз: фазы запроса и фазы выборки.
- На этапе запроса запрос выполняется на каждом шарде локально, и лучшие хиты возвращаются на координирующий узел. Координационный узел объединяет результаты и создает глобальный отсортированный список.
- На этапе выборки координирующий узел получает реальные документы по идентификаторам хитов и возвращает их запрашивающему клиенту.
- Для выполнения фазы выборки координирующему узлу требуется достаточно памяти и процессора.