gpt4 book ai didi

python - 查找匹配空值和 null 值的 ElasticSearch 记录

转载 作者:行者123 更新时间:2023-12-01 04:40:37 25 4
gpt4 key购买 nike

我有一些 elasticsearch 记录被存储为空字符串或空值。我正在尝试开发一个查询,该查询将允许我从索引返回这些内容。我想出了:

{
'query': {
'filtered': {
'filter': {
'bool': {
'should': [
{'term': {'field1': ''}},
{"missing" : {"field": "field1"}},
],
}
}
}
}
}

这符合我的目的,并返回正确的行。但是,如果我尝试搜索多个字段,则“应该”子句会将两个字段组合在一起。这是一个问题,因为我希望存在 AND 关系:

{
'query': {
'filtered': {
'filter': {
'bool': {
'should': [
{'term': {'field1': ''}},
{"missing" : {"field": "field1"}},
# these fields should be AND but are OR
{'term': {'field2': ''}},
{"missing" : {"field": "field2"}},
],
}
}
}
}
}

我是否可以使用单个过滤器或将两个过滤器一起执行上述操作?

最佳答案

您可以使用and filter为此,以及两个 bool/should 过滤器,如下所示:

{
"query": {
"filtered": {
"filter": {
"and": [
{
"bool": {
"should": [
{
"term": {
"field1": ""
}
},
{
"missing": {
"field": "field1"
}
}
]
}
},
{
"bool": {
"should": [
{
"term": {
"field2": ""
}
},
{
"missing": {
"field": "field2"
}
}
]
}
}
]
}
}
}
}

或者您也可以bool/must两个 or filters像这样:

{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"or": [
{
"term": {
"field1": ""
}
},
{
"missing": {
"field": "field1"
}
}
]
},
{
"or": [
{
"term": {
"field2": ""
}
},
{
"missing": {
"field": "field2"
}
}
]
}
]
}
}
}
}
}

关于python - 查找匹配空值和 null 值的 ElasticSearch 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770299/

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