ES Search API

2020-02-01  本文已影响0人  鸿雁长飞光不度

1 Search API

语法 范围
/_search 集群上所有的索引
/index1/_search index1
/index1,index2/_search index1,index2
/index*/_search 以index开头的索引

2.搜索的相关性

3.URI Search详解

3.1URI Query实现搜索

格式:GET /index_name/_search?
查询字符串:q=china&df=title&sort=year:desc&from=0&size=1&timeout=1s

{
  "profile":true
}

3.2 Query String Syntax Part1

3.3 Query String Syntax Part2

GET /movies/_search?q=title:(Beautiful NOT Mind)
GET /movies/_search?q=title:(Beautiful %2B Mind) #加号需要转义

3.4 Query String Syntax Part3

3.5 Query String Syntax Part4

4. Request Body

将请求的参数放在body里面,一些高阶的方法只支持Request body。

GET /movies/_search
{
  "from":10,
  "size":20,
  "script_fields": {
    "new_field":{
      "script":{
        "lang":"painless",
        "source": "doc['year'].value+'_hello'"
      }
    }
  }, 
  "query":{
    "match_all": {}
  }
}
POST /movies/_search
{
  "from":10,
  "size":20,
  "_source": ["title","year"],
  "query":{
    "match_all": {}
  }
}

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 9754,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "movies",
        "_type" : "_doc",
        "_id" : "LHHdfG4BIAugzu8i1C-n",
        "_score" : 1.0,
        "fields" : {
          "new_field" : [
            "1993_hello"
          ]
        }
      }
    ]
  }
}

4.1 Match 查询表达式

实现效果,参看前面的查询语法逻辑运算.

案例

GET /movies/_search
{
  "query":{
    "match":{
      "title":"Beautiful Mind"
    }
  }
}

查询title字段包含 Beautiful 或者 Mind

GET /movies/_search
{
  "query":{
    "match":{
      "title":{
        "query": "Beautiful Mind",
        "operator": "AND"
      }
    }
  }
}

查询title字段包含 Beautiful和Mind,且要求顺序。

4.2 match_phrase,短语查询

GET /movies/_search
{
  "query":{
    "match_phrase":{
      "title":{
        "query": "lord rings",
        "slop": 2
      }
    }
  }
}

短语查询,中间允许隔开两个单词

4.3 query string

类似与URI Query
格式案例

POST users/_search
{
  "query": {
    "query_string": {
      "default_field": "user_name",
      "query": "张三"
    }
  }
}

查询user_name字段包含张三的。

POST users/_search
{
  "query": {
    "query_string": {
      "fields": ["user_name","account"],
      "query": "张 AND 三"
    }
  }
}

user_name或者account包含张三的

4.4 simple query string


POST users/_search
{
  "query": {
    "simple_query_string": {
      "fields": ["user_name","account"],
      "query": "wang wei",
      "default_operator": "OR"
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读