Elasticsearch 全文搜索query_string必备知识点

68 阅读1分钟

query_string 是一种强大的查询语法,支持 Lucene 查询语法,适用于复杂查询场景。


2.1 基本语法

GET /my_index/_search
{
  "query": {
    "query_string": {
      "query": "field_name:search_value"
    }
  }
}

2.2 常用操作符

操作符说明示例
: 匹配值name:John
AND / OR逻辑与 / 逻辑或name:John AND age:30
NOT逻辑非NOT name:John
*通配符(匹配任意字符)name:J*(匹配以 J 开头的 name)
?通配符(匹配单个字符)name:Jo?n(匹配 John、Joan 等)
~模糊查询(支持编辑距离)name:John~1(匹配 John、Jonn 等)
[TO]范围查询age:[20 TO 30]
+必须包含+name:John +age:30
-必须不包含-name:John
()分组查询(name:John OR name:Jane) AND age:30
_existsnull或字段不存在判断NOT _exists:name

2.3 示例

  1. 简单查询

    GET /my_index/_search
    {
      "query": {
        "query_string": {
          "query": "name:John"
        }
      }
    }
    
  2. 多字段查询

    GET /my_index/_search
    {
      "query": {
        "query_string": {
          "query": "name:John OR age:30"
        }
      }
    }
    
  3. 模糊查询

    GET /my_index/_search
    {
      "query": {
        "query_string": {
          "query": "name:Jhno~1"
        }
      }
    }
    
  4. 范围查询

    GET /my_index/_search
    {
      "query": {
        "query_string": {
          "query": "age:[20 TO 30]"
        }
      }
    }
    
  5. 分组查询

    GET /my_index/_search
    {
      "query": {
        "query_string": {
          "query": "(name:John OR name:Jane) AND age:30"
        }
      }
    }