Elasticsearch核心技术与实战学习笔记系列 第三章 17 Query String&Simple Query String查询

一 序

    本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。

    本节属于了解,因为平常再dev tool里面,query match的更为常见。

二 Query String Query

类似 URI Query

//准备数据
PUT /users/_doc/1
{
  "name":"Ruan Yiming",
  "about":"java, golang, node, swift, elasticsearch"
}

PUT /users/_doc/2
{
  "name":"Li Yiming",
  "about":"Hadoop"
}

//查询
POST users/_search
{
  "query": {
    "query_string": {
      "default_field": "name",
      "query": "Ruan AND Yiming"
    }
  }
}

返回一条数据 

 "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.87546873,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.87546873,
        "_source" : {
          "name" : "Ruan Yiming",
          "about" : "java, golang, node, swift, elasticsearch"
        }
      }
    ]
  }

//query string 支持分组查询多个字段

POST users/_search
{
  "query": {
    "query_string": {
      "fields":["name","about"],
      "query": "(Ruan AND Yiming) OR (Java AND Elasticsearch)"
    }
  }
}

Simple Query String Query


类似 Query String , 但是会忽略错误的语法同时只支持部分查询语句

不支持 AND OR NOT , 但会当作字符串处理

Term 之间默认的关系是 OR, 可以指定 Operator

支持 部分逻辑

+替代 AND
| 替代 OR
- 替代 NOT

#Simple Query 默认的operator是 Or
POST users/_search
{
  "query": {
    "simple_query_string": {
      "query": "Ruan AND Yiming",
      "fields": ["name"]
    }
  }
}

// AND 会当做一个字符串,所以会 3个字段OR查询,所以返回2个数据。

POST users/_search
{
  "query": {
    "simple_query_string": {
      "query": "Ruan Yiming",
      "fields": ["name"],
      "default_operator": "AND"
    }
  }
}

返回一条。

猜你喜欢

转载自blog.csdn.net/bohu83/article/details/106155510