<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ~~~ ## 高級查詢 ### 說明 ? ES中提供了一種強大的檢索數據方式,這種檢索方式稱之為`Query DSL`<Domain Specified Language> ,`Query DSL`是利用`Rest API傳遞JSON格式的請求體(Request Body)數據`與ES進行交互,這種方式的`豐富查詢語法`讓ES檢索變得`更強大,更簡潔`。 ### 語法 ```markdown # GET /索引名/_doc/_search {json格式請求體數據} # GET /索引名/_search {json格式請求體數據} ``` - 測試數據 ```markdown # 1.創建索引 映射 PUT /products/ { "mappings": { "properties": { "title":{ "type": "keyword" }, "price":{ "type": "double" }, "created_at":{ "type":"date" }, "description":{ "type":"text" } } } } # 2.測試數據 PUT /products/_doc/_bulk {"index":{}} {"title":"iphone12 pro","price":8999,"created_at":"2020-10-23","description":"iPhone 12 Pro采用超瓷晶面板和亞光質感玻璃背板,搭配不銹鋼邊框,有銀色、石墨色、金色、海藍色四種顏色。寬度:71.5毫米,高度:146.7毫米,厚度:7.4毫米,重量:187克"} {"index":{}} {"title":"iphone12","price":4999,"created_at":"2020-10-23","description":"iPhone 12 高度:146.7毫米;寬度:71.5毫米;厚度:7.4毫米;重量:162克(5.73盎司) [5] 。iPhone 12設計采用了離子玻璃,以及7000系列鋁金屬外殼。"} {"index":{}} {"title":"iphone13","price":6000,"created_at":"2021-09-15","description":"iPhone 13屏幕采用6.1英寸OLED屏幕;高度約146.7毫米,寬度約71.5毫米,厚度約7.65毫米,重量約173克。"} {"index":{}} {"title":"iphone13 pro","price":8999,"created_at":"2021-09-15","description":"iPhone 13Pro搭載A15 Bionic芯片,擁有四種配色,支持5G。有128G、256G、512G、1T可選,售價為999美元起。"} ``` ### 常見檢索 #### 查詢所有[match_all] > **match_all關鍵字:** 返回索引中的全部文檔 ```http GET /products/_search { "query": { "match_all": {} } } ``` #### 關鍵詞查詢(term) > **term 關鍵字**: 用來使用關鍵詞查詢 ```http GET /products/_search { "query": { "term": { "price": { "value": 4999 } } } } ``` > NOTE1: 通過使用term查詢得知ES中默認使用分詞器為`標準分詞器(StandardAnalyzer),標準分詞器對于英文單詞分詞,對于中文單字分詞`。 > NOTE2: 通過使用term查詢得知,`在ES的Mapping Type 中 keyword , date ,integer, long , double , boolean or ip 這些類型不分詞,只有text類型分詞`。 #### 范圍查詢[range] > **range 關鍵字**: 用來指定查詢指定范圍內的文檔 ```http GET /products/_search { "query": { "range": { "price": { "gte": 1400, "lte": 9999 } } } } ``` #### 前綴查詢[prefix] > **prefix 關鍵字**: 用來檢索含有指定前綴的關鍵詞的相關文檔 ```http GET /products/_search { "query": { "prefix": { "title": { "value": "ipho" } } } } ``` #### 通配符查詢[wildcard] > **wildcard 關鍵字**: 通配符查詢 **? 用來匹配一個任意字符 * 用來匹配多個任意字符** ```http GET /products/_search { "query": { "wildcard": { "description": { "value": "iphon*" } } } } ``` #### 多id查詢[ids] > **ids 關鍵字** : 值為數組類型,用來根據一組id獲取多個對應的文檔 ```http GET /products/_search { "query": { "ids": { "values": ["verUq3wBOTjuBizqAegi","vurUq3wBOTjuBizqAegk"] } } } ``` #### 模糊查詢[fuzzy] > **fuzzy 關鍵字**: 用來模糊查詢含有指定關鍵字的文檔 ```http GET /products/_search { "query": { "fuzzy": { "description": "iphooone" } } } ``` > 注意: `fuzzy 模糊查詢 最大模糊錯誤 必須在0-2之間` > > - 搜索關鍵詞長度為 2 不允許存在模糊 > > - 搜索關鍵詞長度為3-5 允許一次模糊 > > - 搜索關鍵詞長度大于5 允許最大2模糊 #### 布爾查詢[bool] > **bool 關鍵字**: 用來組合多個條件實現復雜查詢 > > ? **must: 相當于&& 同時成立** > > ? **should: 相當于|| 成立一個就行** > > ? **must_not: 相當于! 不能滿足任何一個** ```http GET /products/_search { "query": { "bool": { "must": [ {"term": { "price": { "value": 4999 } }} ] } } } ``` #### 多字段查詢[multi_match] ```http GET /products/_search { "query": { "multi_match": { "query": "iphone13 毫", "fields": ["title","description"] } } } 注意: 字段類型分詞,將查詢條件分詞之后進行查詢改字段 如果該字段不分詞就會將查詢條件作為整體進行查詢 ``` #### 默認字段分詞查詢[query_string] ```http GET /products/_search { "query": { "query_string": { "default_field": "description", "query": "屏幕真的非常不錯" } } } 注意: 查詢字段分詞就將查詢條件分詞查詢 查詢字段不分詞將查詢條件不分詞查詢 ``` #### 高亮查詢[highlight] > **highlight 關鍵字**: 可以讓符合條件的文檔中的關鍵詞高亮 ```http GET /products/_search { "query": { "term": { "description": { "value": "iphone" } } }, "highlight": { "fields": { "*":{} } } } ``` > **自定義高亮html標簽**: 可以在highlight中使用`pre_tags`和`post_tags` ```http GET /products/_search { "query": { "term": { "description": { "value": "iphone" } } }, "highlight": { "post_tags": ["</span>"], "pre_tags": ["<span style='color:red'>"], "fields": { "*":{} } } } ``` > 多字段高亮 使用`require_field_match`開啟多個字段高亮 ```http GET /products/_search { "query": { "term": { "description": { "value": "iphone" } } }, "highlight": { "require_field_match": "false", "post_tags": ["</span>"], "pre_tags": ["<span style='color:red'>"], "fields": { "*":{} } } } ``` #### 返回指定條數[size] > **size 關鍵字**: 指定查詢結果中返回指定條數。 **默認返回值10條** ```http GET /products/_search { "query": { "match_all": {} }, "size": 5 } ``` #### 分頁查詢[form] > **from 關鍵字**: 用來指定起始返回位置,和**size關鍵字連用可實現分頁效果** ```http GET /products/_search { "query": { "match_all": {} }, "size": 5, "from": 0 } ``` #### 指定字段排序[sort] ```http GET /products/_search { "query": { "match_all": {} }, "sort": [ { "price": { "order": "desc" } } ] } ``` #### 返回指定字段[_source] > **_source 關鍵字**: 是一個數組,在數組中用來指定展示那些字段 ```http GET /products/_search { "query": { "match_all": {} }, "_source": ["title","description"] } ``` ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看