Elasticsearch 參考指南(全文查詢)

全文查詢

高級全文查詢一般用於在全文字段(如電子郵件正文)上運行全文查詢,它們瞭解如何分析被查詢的字段,並將在執行以前將每一個字段的analyzer(或search_analyzer)應用到查詢字符串。html

本組中的查詢爲:elasticsearch

match query

  • 執行全文查詢的標準查詢,包括模糊匹配和短語或接近查詢。

match_phrase query

  • 相似於match查詢,但用於匹配精確的短語或單詞接近匹配。

match_phrase_prefix query

  • match_phrase查詢相似,可是在最後一個單詞上執行通配符搜索。

multi_match query

  • match查詢的多字段版本。

common terms query

  • 一種更專業的查詢,它對不常見的詞有更多的偏好。

query_string query

  • 支持緊湊的Lucene查詢字符串語法,容許你在單個查詢字符串中指定AND|OR|NOT條件和多字段搜索,僅適用於專業用戶。

simple_query_string query

  • query_string語法的一個更簡單、更健壯的版本,適合直接向用戶公開。

Match Query

match查詢接受文本/數字/日期,分析它們並構造查詢,例如:ide

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

注意,message是字段的名稱,你能夠替換爲任何字段的名稱。ui

match

match查詢是boolean類型的,這意味着提供的文本被分析,而且分析過程從提供的文本構造一個布爾查詢,operator標誌能夠設置爲orand控制布爾子句(默認爲or),能夠使用minimum_should_match參數設置要匹配的可選should子句的最小數量。this

能夠設置analyzer來控制哪一個分析器將對文本執行分析過程,它默認爲字段顯式映射定義或默認搜索分析器。code

lenient參數能夠設置爲true以忽略由數據類型不匹配引發的異常,例如嘗試用文本查詢字符串查詢數值字段,默認值爲falsehtm

模糊性

fuzziness容許基於被查詢的字段類型進行模糊匹配,查看容許設置的模糊性字符串

在這種狀況下,能夠設置prefix_lengthmax_expansion來控制模糊過程,若是設置了模糊選項,查詢將使用top_terms_blended_freqs_${max_expansions}做爲其重寫方法,fuzzy_rewrite參數容許控制查詢如何重寫。get

模糊互換(abba)在默認狀況下都是容許的,但能夠經過設置fuzzy_transpositionsfalse禁用。string

這裏有一個提供額外參數的例子(注意結構的細微變化,message是字段名):

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

零條件查詢

相關文章
相關標籤/搜索