提问人:Ben Rahim 提问时间:11/30/2022 更新时间:11/30/2022 访问量:477
用于匹配 Excel 中值列表中值的 Elasticsearch 查询 [Python]
Elasticsearch query to match values from list of values in Excel [Python]
问:
我是 Elasticsearch 的新手。例如,我有一个值列表:
id_list=[1111,2222,3333,4444,5555]
现在,我想匹配其中的这些ID,以匹配存储在Elasticsearch中的一些具有相同ID号的信息。我正在考虑使用 for loop 循环所有 id 以使用 ES 查询进行匹配,但我不确定如何准确做到这一点。id_list
我知道使用 For 循环可以遍历列表中的所有值
for id in id_list:
print(id)
我可以使用下面的 ES 查询逐个搜索 id:
query={"bool":
{must":
[{"match":{"id_list":"1111"}}]
}}
有什么可能的方法包括循环功能,这样我就不必像上面那样手动输入id了吗? 谢谢!
答:
0赞
Sagar Patel
11/30/2022
#1
您可以使用 elasticsearch 中的术语查询来查询 id 列表:
{
"query": {
"terms": {
"id_list": [1111,2222,3333,4444,5555]
}
}
}
根据评论更新:
如文档中所述,最多 65,536 个术语。
默认情况下,Elasticsearch 将字词查询限制为最大 65,536 个术语。这包括使用术语查找获取的术语。您可以 使用 index.max_terms_count 设置更改此限制。
评论
0赞
Ben Rahim
11/30/2022
嗨,萨加尔·帕特尔,感谢您的建议!如果列表可以上升到数百个 ID 怎么办?在该id_list中键入所有 ID 将是一项繁重的工作。你有什么建议吗?
0赞
Sagar Patel
11/30/2022
您最多可以发送 65,536 个 id,如下所述。或者,您可以点击 Elasticsearch 的并行搜索请求,每个请求有 100 个 ID。如果您的 ID 较少,我建议您使用单个请求。此外,您可以进行性能测试,并在此基础上做出决定。
评论