gpt4 book ai didi

elasticsearch - ElasticSearch:按词条查找项目,如果不存在则将其忽略

转载 作者:行者123 更新时间:2023-12-03 00:49:46 25 4
gpt4 key购买 nike

我需要按几个字段筛选项目。每个字段必须等于value或不存在。可以使用以下代码来实现此过滤器,但它不起作用:

{
"query": {
"bool": {
"filter": [
{
"term": {
"$parentId": 1111
}
},
{
"terms": {
"color.keyword": [
"red",
null
]
}
},
{
"terms": {
"size.keyword": [
"6",
null
]
}
}
]
}
}
}

是否可以实现类似的工作过滤器?

最佳答案

要检查字段是否存在任何值,可以使用exists query。由于要求字段具有特定值或该字段没有值(等于字段必须不存在),因此使用bool query的查询将如下所示:

{
"query": {
"bool": {
"filter": [
{
"term": {
"$parentId": 1111
}
},
{
"bool": {
"should": [
{
"term": {
"color.keyword": 111
}
},
{
"bool": {
"must_not": {
"exist": {
"field": "color.keyword"
}
}
}
}
]
}
},
{
"bool": {
"should": [
{
"term": {
"size.keyword": 111
}
},
{
"bool": {
"must_not": {
"exist": {
"field": "size.keyword"
}
}
}
}
]
}
}
]
}
}
}

这个想法是 should需要具有两个期望的条件-完全满足条件或字段不存在。 should查询可确保从查询数组中至少匹配一个条件。

关于elasticsearch - ElasticSearch:按词条查找项目,如果不存在则将其忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55557454/

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