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

标签 elasticsearch kibana

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

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/

相关文章:

java - 错误 : mongodb. jdbc.MongoDriver 未加载。您确定已在 :jdbc_driver_library? 中包含正确的 jdbc 驱动程序吗

elasticsearch - Kibana geojson上传卡在创建索引上

elasticsearch - 对Kibana的只读OAuth访问

elasticsearch - 即使清除了$ SONAR_HOME/data/es文件夹,Sonarqube也无法启动

elasticsearch - 在 kibana 中将数学添加到指标中

ubuntu - 如何检查 Elasticsearch 是否正在使用 CURL 运行?

elasticsearch - 在应用程序中设置证书颁发机构证书有什么作用?

elasticsearch - 在 Tire 的 Elasticsearch 映射中禁用日期检测

elasticsearch - 同义词 token 过滤器

elasticsearch - Elasticsearch和Kibana-可视化一年日志的最佳实践