1. 程式人生 > >ElasticSearch基本查詢

ElasticSearch基本查詢

more 條件 單詞 邏輯運算符 fix 我們 req 長度 ase

詞條查詢
這是一個簡單查詢。它僅 匹配給定字段中包含該詞條的穩定,且是2未經分析的確切的詞條。
{
“query” :{
“term”:{
“title”:”crime”
}
}
}
多詞條查詢
匹配內容中包含某些詞條的文檔。
{
“query” :{
“terms::{
“tags”:[“novel”,”book”],
“minimum_match”:”2”//至少n個匹配
}
}
}
mathc_all
匹配索引中的所有文件

常用詞查詢
    這是在沒有使用停用詞的情況下,為了提高準確性和相關性而提供的一個解決方案
    該查詢會將詞組分成高頻和低頻兩組,使用低頻查詢並計算分數。然後用高頻詞組查詢但不計算分數。
match查詢
    該查詢講query參數中的值拿出來加以分析,然後構建相應的查詢

    布爾值查匹配查詢
        {
            "query":{
                "match":{
                    "title":{
                        "query" :"crime and punishment",
                        "operator":"and"   -- 連接創建布爾條件的運算符默認or
                        "analyzer" :"",    -- 分析器的名字
                        "fuzziness":"",    -- 構建模糊查詢
                        "prefix_length",   -- 控制模糊查詢的行為
                        "max_expansions",  -- 同上
                        "zero_terms_query" -- 指定當所有的詞條都被分析器移除時,查詢的行為。可以為all或者none。默認後者
                                    不反悔或者返回所有文檔
                        "cutoff_frequency" -- 將查詢分解成兩組,一組高頻一組低頻
                    }
                }
            }
        }
    mathc_phrase查詢
        從分析後的文本中構建短語查詢
            {
            "query":{
                "mathc_phrase" :{
                    "title" :{
                        "query":"crime and punishment",
                        "slop":"1"                    -- 一個整數值,構建短語時,中間允許的未知詞條數。默認為0
                        "analyzer":""                 -- 分析時用到的分析器
                    }
                }
            }
        }


    match_phrase_prefix查詢
        和上類似,增加了兩個參數
        {
            "query":{
                "mathc_phrase" :{
                    "title" :{
                        "query":"crime and punish",   -- 允許最後一個字條只做前綴匹配
                        "slop":"1"                    -- 一個整數值,構建短語時,中間允許的未知詞條數。默認為0
                        "analyzer":""                 -- 分析時用到的分析器
                        "max_expansitions" :"20"      -- 控制多少前綴將被重寫成最後的詞條。?????
                    }
                }
            }
        }

multi_match
    針對多個字段盡心查詢
    {
        "query" :{
            "multi_match":{
                "query":"crime and punishment",
                "fileds":["title","otitle"],
                "use_dis_max":""                  --定義一個布爾值,true時使用析取最大分數查詢-默認。false使用不二查詢
                "tie_breaker":""                  -- 在use_dis_max時使用,指定低分數和最高分數之間的平衡          
            }
        }
    }


query_String
    本查詢支持全部的lucene語法
    A{
        "query":{
            "query_string":{
                "query":" title:crime^10 + title:punishment -otitle:cat +author:(+Fyodor +dostoevsky)",
                "default_field":"title"                    --指定默認的查詢字段。默認為all,由index.query.default_field指定
                "allow_lending_wildcard"                   --指定是否允許通配符作為詞條的第一個字符,默認true
                "default_operator"  :""                    --邏輯運算符or and 默認or
                "lowercase_extend_terms":""                --查詢重寫是否把詞條變成小寫,默認為true,意味重寫後的詞條講小寫
                "enable_position_increments":""            --指定查詢結果中的位置增量是否打開,默認true
                "fuzzy_max_expansions":"    "              --使用模糊查詢時,此參數指定模糊查詢可被擴展到的最大詞條數,默認50
                "fuzzy_prefix_length" :                    --指定生成的模糊查詢中的前綴的長度。默認0
                "fuzzy_min_sim" :                          --此參數指定模糊查詢的最小相似度,默認0.5
                "phrase_slop" :""              --指定參數溢出值,默認0.
                "analyze_wildcard":""                      --指定是否應該分析通配符查詢生成的詞條,默認false
                "auto_generate_phrase_queries":""          --指定是否自動生成短語查詢,默認為false。
                "minimum_should_match" :                   --控制有多少生成Boolean should子句必須與文檔詞條匹配,才能認為是匹配。
                                        可以使百分比,也可以是整數值-個
                "lenient":" "              --格式方面的失敗是否忽略。
            }
        }
    }
    針對多字段的query_string
            {
                "query_string":{
                    "query":""
                    "fields"[title,otitle]
                }
            }
simple_query_string:
    查詢使用lucene最新查詢解析器之一:SImpleQueryParser
標識符查詢
    僅使用提供的標識符來過濾返回的文檔。其針對內部的_uid字段運行,所以不需要啟用_id字段
    {
        ”query“:{
            "ids":{
                "type":"book"
                "values":["10","11"]
            }
        }
    }
前綴查詢
    t他們指定字段以給定的前綴開始的文檔
    {
    ”query":{
        "prefix":{
            "title":"cri"
        }
    }
    }
fuzzy_like_this查詢
    類似more_like_this查詢。
    它查找所有與提供的文本類似的文檔,與more不同的是,它利用模糊字符串並選擇生成的最佳差分詞條
    {
        "qury":{
            "fuzzy_like_this":{
                "fields":[],
                "like_text":""
                "ignore_tf:false        --指定在相似度計算期間,是否忽略詞頻。
                "max_query_terms"       --指定生成的查詢中能包括的最大查詢詞條書,默認25
                "min_similarity"        --指定差分詞條應該有的最小相似性。默認0.5
                "prefix_length"         --指定查分詞條的公共前綴長度,默認為0
                ”boost"
                "analyzer
            }
        }
    }
fuzzy_like_this_field查詢
    和上類似,但是只針對單個字段
fuzzy查詢
    是第三種模糊查詢類型,它基於編輯距離算法類匹配文檔。很占用CPU
通配符查詢
    在查詢中使用*和?等通配符。
more_like_this查詢
    {
        “query":{
            "more_like_this":{
                "fields" "[],
                "like_text":""
                "min_term_freq" :              --最低詞頻,低於將忽略
                "percent_terms_to_match"       --百分比,高於才會被認為是類似的
                "max_query_terms"              --指定生成的查詢中能包括的最大查詢詞條數,默認25
                "stop_words"                   --
                "min_doc_freq"                 --包含我能當的最小數目,低於次數目,該詞條將被忽略,默認5
                "max_doc_freq"
                "min_word_len"                 --單詞的最小長度,低於將被忽略
                ”boost_terms"
                "boost"
                "analyzer"

                }
        }
    }
more_like_this_field查詢
    針對單個字段
範圍查詢
    gte:>=
    gt: >
    lte:<=
    lt:<
最大分值查詢
    他會生成一個由所有子查詢返回的文檔組成的並集並將他返回。,這樣我們可以控制較低得分的子查詢對文檔最後得分的影響
    最後得分的計算:
        最高分數的子查詢的得分之和,獎賞其余子查詢的得分之和乘以tie參數的值
正則表達式查詢
    支持正則
復合查詢

    布爾查詢
        should
        must
        must_not
        minimum_should_match:
    加權查詢
        封裝了兩個查詢,並且降低其中一個查詢返回文檔的得分。其由三個節點必須定義
            positive: 包含所返回文檔得分不會被改變的查詢
            negative: 得分將被降低
            negtive_boost 降低negative部分查詢得分的加權值
    constant_score查詢
        其封裝了另一個查詢或過濾,並為每一個所封裝查詢返回的文檔返回一個常量得分
    索引查詢
        {
            "query":{
                "indices::{
                    "indices":[‘library‘],--library索引上查詢
                    "query" :{
                        "term":{
                            "title":"crime"
                            }
                    },
                    "no_match_query":{--其他索引上查詢
                        "term":{
                            "user":"crime"
                        }
                    }
                }
            }
            }

ElasticSearch基本查詢