Какой DSL-запрос использовать в ElasticSearch?

Я использую библиотеку PHP для ElasticSearch. Я добавил документы в индекс как:

$document = array('name' => 'Bob', 'family' => 'Bobsters', 'car' => 'Mersedes');

Какой запрос мне нужно использовать, если я хочу получить результат поиска после введенного символа: B,

Это запрос должен быть возвращен результат с именем Bob и другой результат, который начинается с символа B,

0

Решение

Для исчерпывающего ответа требуется больше информации, так как вы можете настроить индекс / тип / поля, по которым вы ведете поиск, и т. Д., А также создать более эффективный запрос с дополнительными параметрами, так как запрос с подстановочными знаками очень дорого, особенно если только подстановочный знак одной буквы, и если вы подстановочный знак на конец строки запроса.

Это плохой. Я понимаю, что используется чрезмерное использование полужирного шрифта, однако трудно переоценить, насколько дорогим является подстановочный знак в конце строки запроса (и только одна буква в этом).

Вы можете прочитать о подстановочных запросах Вот.

Как всегда в этих вопросах, полезно упомянуть поиск по мере ввода функциональности, которая часто является конечной целью, найдены документы Вот.

Ниже приведен основной шаблонный запрос, который будет выполнять исходную функцию, которую вы запрашиваете.

POST /my_index/my_type/_search
{
"query": {
"wildcard": {
"name": {
"value": "B*"}
}
}
}

Это вернет все документы с полем имени, начинающимся с B.

Редактировать в ответ на комментарии:

Если вас не интересует подстановочный запрос, вы можете использовать префикс запрос.

POST /my_index/my_type/_search
{
"query": {
"prefix": {
"name": "B"}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]