elasticsearch 搜索

2019-03-30  本文已影响0人  蜗牛ICU

搜索

相应结果说明:

1、hits:

响应中最重要的部分是hits,它包含了total字段来表示匹配到的文档总数,hits数组还包含了匹配到的前10条数据。
hits数组中的每个结果都包含_index、_type和文档的_id字段,被加入到_source字段中这意味着在搜索结果中我们将可以直接使用全部文档。这不像其他搜索引擎只返回文档ID,需要你单独去获取文档。
每个节点都有一个_score字段,这是相关性得分(relevance score),它衡量了文档与查询的匹配程度。默认的,返回的结果中关联性最大的文档排在首位;这意味着,它是按照_score降序排列的。这种情况下,我们没有指定任何查询,所以所有文档的相关性是一样的,因此所有结果的_score都是取得一个中间值1
max_score指的是所有文档匹配查询中_score的最大值。

2、took:

请求花费的时间

3、shards:

分片数

4、timeout:

告诉我们查询是否超时

5、分页查询:

size:
    结果数,默认10
from:
    跳过开始的结果数
    
如果想要显示5个结果:
    GET /_search?size=5
    GET /_search?size=5&from=5
    GET /_search?size=5&from=10

6、term 过滤:
    主要用来精确匹配字段。
    请求体:
            { "term": { "age":    26           }}
            { "term": { "date":   "2014-09-01" }}
            { "term": { "public": true         }}
            { "term": { "tag":    "full_text"  }}
    
7、terms 过滤:
    相当于sql中一个字段中包含哪些值。
            {
            "terms": {
                "tag": [ "search", "full_text", "nosql" ]
                }
            }
8、range 筛选:
    查询范围之内的值。
    范围值:
        gt :: 大于
        gte:: 大于等于
        lt :: 小于
        lte:: 小于等于
            {
                "range": {
                    "age": {
                        "gte":  20,
                        "lt":   30
                    }
                }
            }
9、exists 和 missing 过滤:
    查询某个字段中是否存在某个字段。相当于 sql 中的 IS_NULL。
            {
                "exists":   {
                    "field":    "title"
                }
            }
10、bool 过滤:

    bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含一下操作符:
    must :: 多个查询条件的完全匹配,相当于 and。
    must_not :: 多个查询条件的相反匹配,相当于 not。
    should :: 至少有一个查询条件匹配, 相当于 or。
        命令:
            {
                "bool": {
                    "must":     { "term": { "folder": "inbox" }},
                    "must_not": { "term": { "tag":    "spam"  }},
                    "should": [
                                { "term": { "starred": true   }},
                                { "term": { "unread":  true   }}
                    ]
                }
            }
11、match_all 查询:
    查询到所有的文档。
    
12、multi_match 查询:
    使用一个值,作用在多个值上。
        命令:
            {
                "multi_match": {
                    "query":    "full text search",
                    "fields":   [ "title", "body" ]
                }
            }
13、bool 查询:
    ?

14、 过滤查询:
    ?
    
15、校验查询语句是否合法:
    validate 
        命令:
            GET /gb/tweet/_validate/query
            {
               "query": {
                  "tweet" : {
                     "match" : "really powerful"
                  }
               }
            }
        相应查询结构体是合法的:
            {
              "valid" :         false,
              "_shards" : {
                "total" :       1,
                "successful" :  1,
                "failed" :      0
              }
            }
    想要知道哪里错误 加上 explain:
        GET /gb/tweet/_validate/query?explain
        {
           "query": {
              "tweet" : {
                 "match" : "really powerful"
              }
           }
        }

上一篇 下一篇

猜你喜欢

热点阅读