Match Query

Match Query

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

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

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

match

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

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

  能夠設置lenient參數爲true以忽略由於數據類型不匹配致使的異常,例如嘗試在文本查詢字符串中查詢數字字段。默認爲false。ui

Fuzziness

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

  perfix_length和max_expansions能夠在這種狀況下被設置,以控制模糊過程。若是模糊選擇被設置,則查詢將使用top_terms_blended_freqs_${max_expansions}做爲其重寫的方法,fuzzy_rewrite參數容許控制查詢將如何重寫。spa

  模糊轉換(ab->ba)默認被容許,但能夠經過將fuzzy_transpositions設置爲false來禁止。code

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

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

Zero terms query

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

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

相關文章
相關標籤/搜索