Поиск - это поиск документов в индексе или нескольких индексах. Простой поиск - это просто запрос 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":[ "..." ] } } |
Примечания и полезные сведения
- Распределенный поиск - сложная задача, и каждый шард индекса должен быть прочесан на предмет совпадений, а затем эти совпадения объединены в единый отсортированный список в качестве окончательного результата.
- Существует две фазы поиска: фаза запроса и фаза выборки.
- На этапе запроса запрос выполняется на каждом шарде локально, а лучшие хиты возвращаются на координирующий узел. Координационный узел объединяет результаты и создает глобальный отсортированный список.
- На этапе выборки координирующий узел получает документы, соответствующие идентификаторам хитов, и возвращает их запрашивающему клиенту.
- Координационному узлу требуется достаточно памяти и процессора, чтобы справиться с фазой выборки.