ElasticSearch7.x「新特性」
-
es6時,官方就提到了es7會刪除type,并且es6時已經規定每一個index只能有一個type。在es7中使用默認的_doc作為type,官方說在8.x版本會徹底移除type。
-
api請求方式也發送變化,對索引的文檔進行操作的時候,默認使用的Type是 _doc 如獲得某索引的某ID的文檔:GET index/_doc/id其中index和id為具體的值
ElasticSearch6 中創建索引映射關系的語法
put es_test_index {"settings": {"index": {"analysis.analyzer.default.type": "ik_max_word"}},"mappings": {"item": { # type的名字 item【7.X沒用了】"properties": {"site_id": {"type": "long","index": True},"content": {"type": "text"}}}} }ElasticSearch7 中執行需要去掉 Type類型,修改為
put es_test_index {"settings": {"index": {"analysis.analyzer.default.type": "ik_max_word","number_of_shards":3,"number_of_replicas":2}},"mappings": {"properties": {"site_id": {"type": "long","index": True},"content": {"type": "text"}}} }_type(隱性)替代方案在 document中新增 type字段或者其他字段進行區分
PUT twitter {"mappings": {"_doc": {"properties": {"type": { "type": "keyword" }, # 1"name": { "type": "text" },"user_name": { "type": "keyword" },"email": { "type": "keyword" },"content": { "type": "text" },"tweeted_at": { "type": "date" }}}} } PUT twitter/_doc/user-kimchy {"type": "user", # 2"name": "Shay Banon","user_name": "kimchy","email": "shay@kimchy.com" } PUT twitter/_doc/tweet-1 {"type": "tweet", # 3"user_name": "kimchy","tweeted_at": "2017-10-24T09:00:00Z","content": "Types are going away" } GET twitter/_search {"query": {"bool": {"must": {"match": {"user_name": "kimchy"}},"filter": {"match": {"type": "tweet" # 4}}}} }默認配置變化:默認節點名稱為主機名,默認分片數為1,不再是5
查詢相關速度優化:Weak-AND算法
weak-and算法,又稱為Wand算法, 輸入是n個倒排隊列,輸出top K個得分最高的文檔doc
- 核心原理:取TOP N結果集,估算命中記錄數。
- 簡單來說,一般我們在計算文本相關性的時候,會通過倒排索引的方式進行 查詢,通過倒排索引已經要比全量遍歷節約大量時間,但是有時候仍然很慢。 原因是很多時候我們其實只是想要top n個結果,一些結果明顯較差的也進行了復雜的相關性計算,而weak-and算法通過計算每個詞的貢獻上限來估計文檔的相關性上限,從而建立一個閾值對倒排中的結果進行減枝,從而得到提速的效果
某些搜索用例(例如,法律和專利搜索)引入了查找單詞或短語彼此相距一定距離的記錄的需要。
Elasticsearch 7.0中的間隔查詢引入了一種構建此類查詢的全新方式,與之前的方法(跨度查詢span
queries)相比,使用和定義更加簡單。
與跨度查詢相比,間隔查詢對邊緣情況的適應性更強。
移除 minimum_master_nodes 參數,讓 Elasticsearch 自己選擇可以形成仲裁的節點。
徹底廢除 _all 字段的支持,為提升性能默認不在支持全文檢索
新增的功能
-
8.1 新增應用程序主動檢測功能,搭配對應版本的kibana,用戶可監測應用服務的健康狀態,并在出現問題后及時發出通知
-
8.2 新增間隔查詢(Intervals Queries),用戶可設置多字符串在文檔中出現的先后順序進行檢索
-
8.3 自帶jdk,所以在安裝ES時不再需要單獨下載和配置JAVA_HOME。
取消Query結果中的Hits Count的支持(聚合查詢除外),使得查詢性能大幅提升。這就意味著,每次查詢后將不能得到精確的結果集數量
- 8.4 的集群協調子系統,縮減配置項提升穩定性。時間戳納秒級支持,提升數據精度
移除 minimum_master_nodes 參數,讓 Elasticsearch 自己選擇可以形成仲裁的節點。
典型的主節點選舉現在只需要很短的時間就可以完成。
集群的伸縮變得更安全、更容易,并且可能造成丟失數據的系統配置選項更少了。
節點更清楚地記錄它們的狀態,有助于診斷為什么它們不能加入集群或為什么無法選舉出主節點。
以至于,es7的java代碼,只能使用restclient。然后,個人綜合了一下,對于java編程,建議采用 High-level-rest-client 的方式操作ES集群
已刪除接受Header參數的API方法;Cluster Health API默認為集群級別
參考文章
參考文章
總結
以上是生活随笔為你收集整理的ElasticSearch7.x「新特性」的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SaaS的护城河
- 下一篇: SSO单点登录和OAuth2.0的区别和