我有多个文档的索引。这些文件包含以下字段:
- 姓名
- adhar_number
- pan_number
- acc_number
我想创建一个 elasticsearch dsl 查询。对于此查询,有两个输入可用,例如 adhar_number 和 pan_number。此查询应与此匹配OR 条件。
示例:如果一个文档仅包含提供的 adhar_number,那么我也想要该文档。
我有一本包含以下内容的字典(my_dict):
{
"adhar_number": "123456789012",
"pan_number": "BGPPG4315B"
}
我尝试如下:
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
s = Search(using=es, index="my_index")
for key, value in my_dict.items():
s = s.query("match", **{key:value})
print(s.to_dict())
response = s.execute()
print(response.to_dict())
它创建以下查询:
{
'query': {
'bool': {
'must': [
{
'match': {
'adhar_number': '123456789012'
}
},
{
'match': {
'pan_number': 'BGPPG4315B'
}
}
]
}
}
}
上面的代码为我提供了AND 条件而不是OR Condition的结果。
请向我提出包含 OR 条件的好建议。