ElasticSearch基本查詢
阿新 • • 發佈:2017-08-31
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基本查詢