用于匹配 Excel 中值列表中值的 Elasticsearch 查询 [Python]

Elasticsearch query to match values from list of values in Excel [Python]

提问人:Ben Rahim 提问时间:11/30/2022 更新时间:11/30/2022 访问量:477

问:

我是 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了吗? 谢谢!

python elasticsearch 布尔逻辑 elasticsearch-dsl

评论


答:

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 较少,我建议您使用单个请求。此外,您可以进行性能测试,并在此基础上做出决定。