使用elasticsearch_dsl

时间:2018-05-09 19:45:18

标签: python elasticsearch kibana elasticsearch-dsl elasticsearch-dsl-py

我正在寻找使用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 *"

感谢任何帮助。

0 个答案:

没有答案