在ES(Elasticsearch)中,查询之一是不等于查询。当我们需要查询某些值不等于给定值时,我们可以使用不等于查询。这篇文章将深入探讨ES中的不等于查询,从不等于语法、查询某个字段不等于、与不等于查询相关的概念等多个方面进行阐述。
一、不等于语法
在ES中,不等于查询使用“!=”符号表示,也可以使用“NOT”关键字,其语法格式为:
{
  "query": {
    "bool": {
      "must_not": [
        {
          "term": {
            "field": "value"
          }
        }
      ]
    }
  }
}
上面的查询语句表示查询“field”不等于“value”的所有文档。
下面是一个完整的示例代码:
PUT /my_index/_doc/1
{
    "title": "good book"
}
PUT /my_index/_doc/2
{
    "title": "bad book"
}
PUT /my_index/_doc/3
{
    "title": "average book"
}
GET /my_index/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "term": {
            "title": "good"
          }
        }
      ]
    }
  }
}
上述代码将返回“title”字段不等于“good”的文档2和3。
二、查询某个字段不等于
在ES中,我们可以使用“bool”查询将多个查询条件组合成一个查询。因此,如果我们想查询某个字段不等于给定值,我们可以将“term”查询和“must_not”查询组合使用。下面是一个示例代码:
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ],
      "must_not": [
        {
          "term": {
            "title": "good"
          }
        }
      ]
    }
  }
}
上述代码查询了“title”字段不等于“good”的所有文档。
三、与不等于查询相关的概念
1. 存在查询
存在查询表示查询某个字段是否存在值,我们可以使用“exists”查询。下面是一个示例代码:
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {"exists": {"field": "title"}}
      ],
      "must_not": [
        {
          "term": {
            "title": "good"
          }
        }
      ]
    }
  }
}
上述代码查询了“title”字段存在并且不等于“good”的所有文档。
2. 范围查询
范围查询用于查询某个字段的值在一个范围内的文档。我们可以使用“range”查询。下面是一个示例代码:
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {"range": {"age": {"gte": 10, "lte": 20}}}
      ],
      "must_not": [
        {
          "term": {
            "title": "good"
          }
        }
      ]
    }
  }
}
上述代码查询了“age”字段在10到20之间且“title”字段不等于“good”的所有文档。
3. 字段缺失查询
字段缺失查询用于查询某个字段不存在值的文档,我们可以使用“missing”查询。下面是一个示例代码:
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {"missing": {"field": "age"}}
      ],
      "must_not": [
        {
          "term": {
            "title": "good"
          }
        }
      ]
    }
  }
}
上述代码查询了“age”字段不存在且“title”字段不等于“good”的所有文档。
总结
在本文中,我们详细探讨了ES中的不等于查询,从不等于语法、查询某个字段不等于、与不等于查询相关的概念等多个方面进行了阐述。不等于查询通常与其他查询组合使用,以得到想要的结果。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/180169.html
 
 微信扫一扫
微信扫一扫  支付宝扫一扫
支付宝扫一扫 