Поиск более одной строки в поле с использованиемasticsearch_dsl - PullRequest
0 голосов
/ 09 мая 2018

Я ищу способы использования elasticsearch_dsl для запроса нескольких строк в одном поле.
Когда я пытаюсь использовать подстановочный знак, он просто отображает последнюю найденную строку

Например, мне нужно искать следующие строки в поле с именем cars_model

“honda_accord”
“honda_crv”
“honda_civic” … etc

Итак, мой запрос

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
client = Elasticsearch([{'host': MY_HOST, 'port': MY_PORT, 'timeout': TIME_OUT}])

s = Search(using=client,index=“myIndex”).query("wildcard",cars_model=“honda*”).execute()

Здесь возвращается только список «honda_crv», который, как я предполагаю, содержит последние данные.

Я попытался использовать следующие опции после некоторого исследования

body = {'query_string': {'query': ‘honda*’, 'default_operator': 'or', 'analyze_wildcard': True}}
s = Search(using=client, index=“myIndex”).query(body).execute()

Даже попробовал multi_match вариант, который по-прежнему дает мне последний найденный запрос.

from elasticsearch_dsl.query import MultiMatch, Match
s = Search(using=client, index=“my_index”).query("multi_match", query="wildcard", cars_model=[“honda_accord”,“honda_crv”, “honda_civic” ])

По логике в нем должны быть перечислены все модели автомобилей, которые соответствуют "honda *"

Любая помощь приветствуется.

...