gpt4 book ai didi

java - elasticsearch java查询匹配我的列表中的任何一个

转载 作者:行者123 更新时间:2023-11-30 06:20:35 26 4
gpt4 key购买 nike

我正在尝试使用 java 构建一个查询,该查询通过列表过滤所有命中。假设我有一个不同名称的列表,现在我想构建一个查询,它返回名称存储在列表中的所有元素。由于此列表中将有 100 多个名称,我只想将整个列表传递给我的查询。

首先,我尝试在我的elasticsearch head插件中构建一个原始查询,以便我更容易将其实现到java中。

目前我的原始查询如下所示:

{
"query": {
"bool": {
"filter": {
"term": {
"name": {
"value": [
"name1",
"name2"
]
}
}
}
}
}
}

我知道我至少有一个名为“name1”的元素,与“name2”相同。但这个查询不返回任何内容。我做错了什么?

谢谢,阿西米

最佳答案

term 查询不支持值数组。但是,terms 确实如此,因此您可以执行以下操作:

{
"query": {
"bool": {
"filter": {
"terms": {
"name": [
"name1",
"name2"
]
}
}
}
}
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html

您还可以将术语查询包装到 bool -> should 查询中,如下所示:

{
"query": {
"bool": {
"filter": {
"bool": {
"should": [
{
"term": {
"name": "name1"
}
},
{
"term": {
"name": "name2"
}
}
]
}
}
}
}
}

关于java - elasticsearch java查询匹配我的列表中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48226395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com