<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      elasticsearch 查詢(match和term)

      es中的查詢請求有兩種方式,一種是簡易版的查詢,另外一種是使用JSON完整的請求體,叫做結構化查詢(DSL)。
      由于DSL查詢更為直觀也更為簡易,所以大都使用這種方式。
      DSL查詢是POST過去一個json,由于post的請求是json格式的,所以存在很多靈活性,也有很多形式。
      這里有一個地方注意的是官方文檔里面給的例子的json結構只是一部分,并不是可以直接黏貼復制進去使用的。一般要在外面加個query為key的機構。

      match

      最簡單的一個match例子:

      查詢和"我的寶馬多少馬力"這個查詢語句匹配的文檔。

      {
        "query": {
          "match": {
              "content" : {
                  "query" : "我的寶馬多少馬力"
              }
          }
        }
      }
      

      上面的查詢匹配就會進行分詞,比如"寶馬多少馬力"會被分詞為"寶馬 多少 馬力", 所有有關"寶馬 多少 馬力", 那么所有包含這三個詞中的一個或多個的文檔就會被搜索出來。
      并且根據lucene的評分機制(TF/IDF)來進行評分。

      match_phrase

      比如上面一個例子,一個文檔"我的保時捷馬力不錯"也會被搜索出來,那么想要精確匹配所有同時包含"寶馬 多少 馬力"的文檔怎么做?就要使用 match_phrase 了

      {
        "query": {
          "match_phrase": {
              "content" : {
                  "query" : "我的寶馬多少馬力"
              }
          }
        }
      }
      

      完全匹配可能比較嚴,我們會希望有個可調節因子,少匹配一個也滿足,那就需要使用到slop。

      {
        "query": {
          "match_phrase": {
              "content" : {
                  "query" : "我的寶馬多少馬力",
                  "slop" : 1
              }
          }
        }
      }
      

      multi_match

      如果我們希望兩個字段進行匹配,其中一個字段有這個文檔就滿足的話,使用multi_match

      {
        "query": {
          "multi_match": {
              "query" : "我的寶馬多少馬力",
              "fields" : ["title", "content"]
          }
        }
      }
      

      但是multi_match就涉及到匹配評分的問題了。

      我們希望完全匹配的文檔占的評分比較高,則需要使用best_fields

      {
        "query": {
          "multi_match": {
            "query": "我的寶馬發動機多少",
            "type": "best_fields",
            "fields": [
              "tag",
              "content"
            ],
            "tie_breaker": 0.3
          }
        }
      }
      

      意思就是完全匹配"寶馬 發動機"的文檔評分會比較靠前,如果只匹配寶馬的文檔評分乘以0.3的系數

      我們希望越多字段匹配的文檔評分越高,就要使用most_fields

      {
        "query": {
          "multi_match": {
            "query": "我的寶馬發動機多少",
            "type": "most_fields",
            "fields": [
              "tag",
              "content"
            ]
          }
        }
      }
      

      我們會希望這個詞條的分詞詞匯是分配到不同字段中的,那么就使用cross_fields

      {
        "query": {
          "multi_match": {
            "query": "我的寶馬發動機多少",
            "type": "cross_fields",
            "fields": [
              "tag",
              "content"
            ]
          }
        }
      }
      

      term

      term是代表完全匹配,即不進行分詞器分析,文檔中必須包含整個搜索的詞匯

      {
        "query": {
          "term": {
            "content": "汽車保養"
          }
        }
      }
      

      查出的所有文檔都包含"汽車保養"這個詞組的詞匯。

      使用term要確定的是這個字段是否“被分析”(analyzed),默認的字符串是被分析的。

      拿官網上的例子舉例:

      mapping是這樣的:

      PUT my_index
      {
        "mappings": {
          "my_type": {
            "properties": {
              "full_text": {
                "type":  "string"
              },
              "exact_value": {
                "type":  "string",
                "index": "not_analyzed"
              }
            }
          }
        }
      }
      
      PUT my_index/my_type/1
      {
        "full_text":   "Quick Foxes!",
        "exact_value": "Quick Foxes!"  
      }
      

      其中的full_text是被分析過的,所以full_text的索引中存的就是[quick, foxes],而extra_value中存的是[Quick Foxes!]。

      那下面的幾個請求:

      GET my_index/my_type/_search
      {
        "query": {
          "term": {
            "exact_value": "Quick Foxes!"
          }
        }
      }
      

      請求的出數據,因為完全匹配

      GET my_index/my_type/_search
      {
        "query": {
          "term": {
            "full_text": "Quick Foxes!"
          }
        }
      }
      

      請求不出數據的,因為full_text分詞后的結果中沒有[Quick Foxes!]這個分詞。

      bool聯合查詢: must,should,must_not

      如果我們想要請求"content中帶寶馬,但是tag中不帶寶馬"這樣類似的需求,就需要用到bool聯合查詢。
      聯合查詢就會使用到must,should,must_not三種關鍵詞。

      這三個可以這么理解

      • must: 文檔必須完全匹配條件
      • should: should下面會帶一個以上的條件,至少滿足一個條件,這個文檔就符合should
      • must_not: 文檔必須不匹配條件

      比如上面那個需求:

      {
        "query": {
          "bool": {
            "must": {
              "term": {
                "content": "寶馬"
              }
            },
            "must_not": {
              "term": {
                "tags": "寶馬"
              }
            }
          }
        }
      }


      轉載:
      本文基于署名-非商業性使用 3.0許可協議發布,歡迎轉載,演繹,但是必須保留本文的署名葉劍峰(包含鏈接http://www.rzrgm.cn/yjf512/),且不得用于商業目的。如您有任何疑問或者授權方面的協商,請與我聯系
      posted @ 2021-02-19 10:15  樓宇  閱讀(93)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人亚洲日韩欧美| 婷婷综合缴情亚洲| 国产av一区二区三区久久| 国产91特黄特色A级毛片| 国内不卡一区二区三区| 欧美大胆老熟妇乱子伦视频 | 她也色tayese在线视频| 九九成人免费视频| 亚洲av色综合久久综合| 亚洲+成人+国产| 中文字幕国产精品av| 蜜桃成熟色综合久久av| 国产在线一区二区不卡| 精品日韩亚洲av无码| 亚洲青青草视频在线播放| 亚洲综合在线亚洲优优色| 4399理论片午午伦夜理片| 陵川县| 亚洲精品国产男人的天堂| 国产老妇伦国产熟女老妇高清| 久久天天躁狠狠躁夜夜2020老熟妇| 色综合久久中文综合久久激情| 2020国产成人精品视频| 日韩人妻系列无码专区| 欧美人成精品网站播放| 亚洲人成网站在线无码| 小污女小欲女导航| 波多野结衣在线播放| 自拍偷自拍亚洲精品熟妇人| 无码高潮爽到爆的喷水视频app| 久久精品熟女亚洲av艳妇| 亚洲中文无码永久免费| 激情综合网激情综合网激情 | 漂亮的保姆hd完整版免费韩国| 四房播色综合久久婷婷| 夜夜嗨久久人成在日日夜夜| 亚洲AV无码成人网站久久精品| 99久久婷婷国产综合精品青草漫画| 国产99在线 | 欧美| 综合色久七七综合尤物| 久久综合97丁香色香蕉|