Match Query


Match Query

  match查詢接受文本/數字/日期,分析他們,並構件查詢。例如:

GET /_search
{
    "query": {
        "match" : {
            "message" : "this is a test"
        }
    }
}

  注意,message 是字段的名字,你可以使用任意字段(包括_all)來代替。

match

  match查詢是boolean類型的。這意味着分析所提供的文本,並且分析進程從提供的文本構造一個boolean查詢。操作符可以被設置為or 或者 and 以控制boolean子句(默認為or)。可以通過使用minimun_should_match參數設置要匹配的可選should子句的最小數量。

  分析器可以設置控制那個分析器將對文本執行分析過程。它默認為字段顯示映射定義或默認搜索分析器。

  可以設置lenient參數為true以忽略因為數據類型不匹配導致的異常,例如嘗試在文本查詢字符串中查詢數字字段。默認為false。

Fuzziness

  fuzziness允許基於查詢字段類型的模糊匹配。有關允許的設置,請看Fuzziness一節

  perfix_length和max_expansions可以在這種情況下被設置,以控制模糊過程。如果模糊選擇被設置,則查詢將使用top_terms_blended_freqs_${max_expansions}作為其重寫的方法,fuzzy_rewrite參數允許控制查詢將如何重寫。

  模糊轉換(ab->ba)默認被允許,但可以通過將fuzzy_transpositions設置為false來禁止。

  以下是提供附加參數的一個例子(注意結構略有變化,message是字段名稱):

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "this is a test",
                "operator" : "and"
            }
        }
    }
}

Zero terms query

  如果使用的分析儀刪除了像stop過濾器這樣的查詢中的所有令牌,默認的行為是根本不匹配任何文檔。為了改變,可以使用zero_terms_query選項,它接收none(默認)和all,並且符合match_all查詢。

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "to be or not to be",
                "operator" : "and",
                "zero_terms_query": "all"
            }
        }
    }
}

Cutoff frequency

  匹配查詢支持cutoff_frequency,允許指定決定或相對文檔頻率,其中高頻率項被移動到可選子查詢中,並且低頻項之一在or操作匹配的情況或者所有的低頻項在and操作符匹配的情況下才能得分。

  此查詢允許在運行時動態處理stopwords,與領域無關,不需要停用文件。它可以防止對高頻項進行評分/迭代,如果更高/更低的頻率項與文檔匹配,則僅考慮這些術語。然后,如果所有查詢詞都高於給定的cutoff_frequency,則查詢將自動轉換為純連接(and)查詢,以確保快速執行。

  如果在[0..1)范圍內,則cutoff_frequency可以相對於文檔總數,如果大於或等於1.0,cutoff_frequency可以是絕對的文檔總數。

  下面是一個例子,顯示了一個由stopwords exclusively組成的查詢。

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "to be or not to be",
                "cutoff_frequency" : 0.001
            }
        }
    }
}

  重要:cutoff_frequency選項以per_shard_level運行。這意味着當你嘗試使用低文檔編號的測試索引時,你應該遵循相關性中的建議。

與query_string/field進行對比
查詢匹配系列不會通過"query parsing"過程。它不支持字段名稱前綴,通配符或者其它"高級"功能。由於這個原因,它失敗的機會非常小/不存在,並且它提供一個優秀的行為當它只分析和
運行該文本作為查詢行為(通常是一個文本搜索框)。此外phrase_prefix類型可以提供一個很好的"即時"行為來自動加載搜索結果。

 

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM