gpt4 book ai didi

elasticsearch - 如果字段具有值,如何编写 Elasticsearch 查询以在数组中包含值

转载 作者:行者123 更新时间:2023-12-02 23:07:53 24 4
gpt4 key购买 nike

假设 flex 映射中有一个字段,并非所有条目都具有该字段,例如,某些条目具有以下值
“intvalue”:[200、201、202]
“intvalue”:[200、203、204]
但是某些条目没有intvalue字段
我想编写一个查询来搜索具有值的条目(例如200、202),该查询包含
{“terms”:{“intvalue”:[200,202],“boost”:1.0}}
它将仅返回包含该值的结果,如上面的示例。
查询是否可能返回具有该值的所有条目或没有该字段,例如,我下面有4个条目
条目A:
“intvalue”:[200,201]
条目B
“intvalue”:[200,203]
条目C
“intvalue”:[]
条目D
“intvalue”:[204、205]
然后查询{“terms”:{“intvalue”:[200,202],“boost”:1.0}}应当返回条目A B,C

最佳答案

您可以使用Boolean query组合Exists queryTerms Query
索引数据:

{ "intvalue" : [200, 201] }
{ "intvalue" : [200, 203] }
{ "intvalue" : [] }
{ "intvalue" : [204, 205] }
搜索查询:
 {
"query": {
"bool": {
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "intvalue"
}
}
}
},
{
"bool": {
"must": {
"terms": {
"intvalue": [
200,
202
],
"boost": 1.0
}
}
}
}
]
}
}
}
搜索结果:
"hits": [
{
"_index": "fd_cb",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"intvalue": [
200,
201
]
}
},
{
"_index": "fd_cb",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"intvalue": [
200,
203
]
}
},
{
"_index": "fd_cb",
"_type": "_doc",
"_id": "3",
"_score": 0.0,
"_source": {
"intvalue": []
}
}
]

关于elasticsearch - 如果字段具有值,如何编写 Elasticsearch 查询以在数组中包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63496735/

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