復合查詢
查詢的優化
葉查詢子句:在特定的字段上查詢特定的值,比如 match term rang 可以理解為單條件查詢
復合查詢字句:包含其他葉查詢或復合查詢,可以理解為多條件查詢.
查詢: query 用於檢索內容與條件是否匹配,並計算_score份數
過濾:filter不計算匹配得分,只是簡單的決定文件是否匹配,主要用於過濾結構化資料 如時間 狀態 型別等字段
我們索引資料的結構
get /meadin/industry_news/_search
}, }],
"filter":}
}}}}
相當於sql語句
select * from industry_news where title like %酒店% and content like %洲際% and newsissuetime between '' and ''
查詢預設是分詞的 } 和 }第二個條件比第乙個條件查詢到的結果只會多不會少,} 可以理解為
} } } 三個條件查到 的結果的總和
lucece倒排索引
根據關鍵字找到所在的索引的id 酒店 ->1 酒店這裡是被分詞的->1,2,4
match的模糊查詢
get /meadin/industry_news/_search}}
}
fuzziness引數的表示最大的編輯距離 預設是2
ac abc 編輯差乙個字元
ad abcd 編輯差2個字元
編輯距離越小則兩個字串越像 我們使用fuzziness 一般都是設定為1
fuzzy 的模糊查詢
get /meadin/industry_news/_search
}}
fuzzy 的模糊查詢和term查詢有點像 也是不分詞的查詢 fuzzy雖然不分詞可以模糊匹配
環球訊 -> 「source」: 「環球旅訊」 可以匹配到這個, 但是如果是term查詢就匹配不到了
match短語查詢 match_parse
get /meadin/industry_news/_search
}}
match 字首查詢
匹配以專家開頭的標題的文章
get /meadin/industry_news/_search
}}
macth多欄位查詢
get /meadin/industry_news/_search
}}
在title synopisi contect 三個欄位中查詢 任意乙個滿足條件都會返回,title^3 計算份數的時候title欄位的重要性是其他欄位的三倍,多匹配查詢內部的執行方式 根據 type 型別
預設就是best_fields:查詢匹配任何欄位的文章,但是使用最佳匹配欄位的score
most_fields:查詢匹配任何欄位的文件,接合每個欄位的score
cross_fields:用相同的分析器處理字段,把這些字段當做乙個大的字段.
phrase:每個欄位上執行短語匹配查詢,接合每個欄位的score
phrase_prefix:在每個欄位是上執行短語字首查詢,結合每個欄位的score
精準的查詢,對查詢結果不做相關性排序.常用語結構化資料 如 數字 日期 列舉
單個字段查詢
select * from table where type=1
get /meadin/industry_news/_search
}}
多欄位查詢
select * from table where type in (19,20,79)
get /meadin/industry_news/_search
}}
範圍查詢
get /meadin/industry_news/_search}}
}
復合查詢就是將多個葉子查詢組合到一起,組合方式有多種
must 必須出現在匹配的文件中 並且會影響匹配得分
filter 必須出現在匹配的文當中 不影響匹配得分
should 應該出現在匹配的文件中 匹配乙個或多個should裡面的條件(可以通過minimum_should_match引數設定 預設最少匹配乙個)
must_not 必須不出現在匹配的文件中
get /meadin/industry_news/_search
}, "boost"
: 1.2
}},
}, "boost"
: 1.2
}}]}}
}
查詢context欄位包含洗浴 或者 電視 的文件 constant_score 表示不計算詞頻 同乙個詞出現一次和出現多次得分是一樣的,這樣的查詢場景 我們關心的是包含的要查詢的內容多不多.好比 查詢一家酒店 要求這個酒店 有 洗浴 電視 wifi 等 出現的專案越多排名越靠前
get meadin/industry_news/_search
}, "filter":}}}}
為每乙個倒排索引構建乙個 bitset(用來做快取的二進位制陣列) 如下圖
根據查詢條件 「status」: 「1」 找到對應的 bitset [1,0,1] 通過bitset找到對應的資料doc1 和 doc3把資料返回給客戶端
cache bitset 跟蹤query 在最近的256個query中超過一定次數使用的bitset會被快取起來,以備下次使用
bitset的查詢是在query查詢開始的時候 進行的,這樣可以過濾掉大部分內容
以後只要有相同的filter 就會直接定位到相應的bitset
elasticsearch啟動報錯系列
wget 解壓tar zxvf elasticsearch 6.2.4.tar.gz 在啟動過程 中會遇到這兩個問題 1 max file descriptors 4096 for elasticsearch process is too low,increase to at least 65536...
Elasticsearch系列九 Bool 查詢
案例書籍推薦 bool查詢對應lucenne中的booleanquery,它由乙個或者多個子句組成,match 分詞匹配,下面的例子會對查詢盡心分詞,分為 寶馬 多少 馬力 那麼所有包含這三個詞中的乙個或者多個文件就會被搜尋出來.match phrase 針對上面的例子,乙個文件 我的保時捷也不錯 ...
ElasticSearch系列04 核心概念
一 es配置檔案詳解 elasticsearch.yml es的基本配置檔案 詳見elasticsearch中文.yml logging.yml 日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置來設定就行了。二 es中的核心概念 cluster...