gpt4 book ai didi

elasticsearch - 如何查询空字段或特定值

转载 作者:行者123 更新时间:2023-12-03 00:53:37 24 4
gpt4 key购买 nike

我正在尝试编写查询以实现以下结果:

field1: value1 AND 
field2: value2 OR "" (empty)

我尝试了以下操作,但始终会返回空结果:
{
"_source": ["field1", "field2"],
"query": {
"bool": {
"must": [
{"match": { "field1": "value1" }},
{
"bool": {
"should": [
{
"match": {
"field2": "value2"
}
}
],
"must_not": [
{
"exists": { "field": "field2" }
}
]
}
}
]
}
}
}

我相信我正在做一个与自己矛盾的查询。

最佳答案

这看起来非常复杂。

尝试使用queryStringQuery
尝试像这样重写查询

{
"_source": ["field1", "field2"],
"query": {
"query_string": {
"query": "field1:value1 AND (field2:value2 OR (!field2:*))"
}
}

}

如果您仍然想以这种格式使用

您已经使用must_not子句,根据您的用例,这将在某种意义上如下所示。

栏位1:值1与

field2:value2 AND NOT“”(空)

你应该做的是
   {
"_source": [
"field1",
"field2"
],
"query": {
"bool": {
"must": [
{
"match": {
"field1": "value1"
}
},
{
"bool": {
"should": [
{
"match": {
"field2": "value2"
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "field2"
}
}
]
}
}
]
}
}
]
}
}
}

但是,如果您要先分析查询中已在查询中完成的字词,则使用queryString会更容易。

所以在这种情况下使用queryString OR bool将会是相同的

关于elasticsearch - 如何查询空字段或特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763099/

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