005,elasticsearch多种搜索方式--语法初窥

elasticsearch多种搜索方式--语法初窥json

 

elasticsearch六种搜索方式:elasticsearch

一、query string search
二、query DSL
三、query filter
四、full-text search
五、phrase search
六、highlight searchspa

 

一、query string search排序

    (1)搜索所有用户:索引

    GET  /index/type/_searchci

        以下图,所得信息:string

        

        参数解释:     it

        took:耗费了几毫秒ast

        _shards:数据拆成了5个分片,因此对于搜索请求,会打到全部的primary shard(或者是它的某个replica shard也能够)搜索

        hits.total:查询结果的数量,N个document

        hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
        hits.hits:包含了匹配搜索的document的详细数据

        (2)搜索用户名中包含“帅”的商品,并且按照年龄降序排序:

            GET   /index/type/_search?q=name:帅&sort=age:desc

 

二、query DSL

        DSL:Domain Specified Language,特定领域的语言
        http request body:请求体,能够用json的格式来构建查询语法,比较方便,能够构建各类复杂的语法

        (1)查询全部的用户

            GET   /index/type/_search
                    {
                          "query": { "match_all": {} }
                    }

        (2)查询名称包含shuai的用户,同时按照年龄降序排序

            GET /index/type/_search

            {
                "query" : {
                    "match" : {
                        "name" : "shuai"
                    }
                },
                "sort": [
                    { "age": "desc" }
                ]
            }

        (3)分页查询用户,假设每页就显示1条记录,如今显示第2页

            GET /index/type/_search
            {
                  "query": { "match_all": {} },
                  "from": 1,
                  "size": 1
            }

        (4)指定要查询出来用户的名称和年龄就能够

            GET /index/type/_search

            {
                  "query": { "match_all": {} },
                  "_source": ["name", "age"]
            }

        (5),分页查询商品,总共3条商品,假设每页就显示1条商品,如今显示第2页,因此就查出来第2个商品

            GET /ecommerce/product/_search
            {
              "query": { "match_all": {} },
              "from": 1,
              "size": 1
            }

            (6),指定要查询出来商品的名称和价格就能够

            GET /ecommerce/product/_search
            {
              "query": { "match_all": {} },
              "_source": ["name", "price"]
            }

 

三、query filter

搜索商品名称包含yagao,并且售价大于25元的商品

GET /ecommerce/product/_search
{
    "query" : {
        "bool" : {
            "must" : {
                "match" : {
                    "name" : "yagao" 
                }
            },
            "filter" : {
                "range" : {
                    "price" : { "gt" : 25 } 
                }
            }
        }
    }
}

---------------------------------------------------------------------------------------------------------------------------------

四、full-text search(全文检索)

GET /ecommerce/product/_search
{
    "query" : {
        "match" : {
            "producer" : "yagao producer"
        }
    }
}

五、phrase search(短语搜索)

跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就能够做为结果返回
phrase search,要求输入的搜索串,必须在指定的字段文本中,彻底包含如出一辙的,才能够算匹配,才能做为结果返回

GET /ecommerce/product/_search
{
    "query" : {
        "match_phrase" : {
            "producer" : "yagao producer"
        }
    }
}


六、highlight search(高亮搜索结果)

GET /ecommerce/product/_search {     "query" : {         "match" : {             "producer" : "producer"         }     },     "highlight": {         "fields" : {             "producer" : {}         }     } }  

相关文章
相关标签/搜索