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" : {}         }     } }  

相關文章
相關標籤/搜索