日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch7.x「新特性」

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch7.x「新特性」 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • ES 數據庫的存儲結構變化:去除了Type
    • es6時,官方就提到了es7會刪除type,并且es6時已經規定每一個index只能有一個type。在es7中使用默認的_doc作為type,官方說在8.x版本會徹底移除type。

    • api請求方式也發送變化,對索引的文檔進行操作的時候,默認使用的Type是 _doc 如獲得某索引的某ID的文檔:GET index/_doc/id其中index和id為具體的值

  • 創建索引mapping關系的時候,容易出的錯:Root mapping definition has unsupported parameters
  • 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算法通過計算每個詞的貢獻上限來估計文檔的相關性上限,從而建立一個閾值對倒排中的結果進行減枝,從而得到提速的效果
  • 間隔查詢(Intervals queries):
  • 某些搜索用例(例如,法律和專利搜索)引入了查找單詞或短語彼此相距一定距離的記錄的需要。

    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 自己選擇可以形成仲裁的節點。

    典型的主節點選舉現在只需要很短的時間就可以完成。

    集群的伸縮變得更安全、更容易,并且可能造成丟失數據的系統配置選項更少了。

    節點更清楚地記錄它們的狀態,有助于診斷為什么它們不能加入集群或為什么無法選舉出主節點。

  • 不會再有OOM(內存溢出)的情況,JVM引入了新的circuit breaker(熔斷)機制,當查詢或聚合的數據量超過單機處理的最大內存限制時會被截斷,并拋出異常
  • 集群連接變化:6版本之后TransportClient被廢棄
  • 以至于,es7的java代碼,只能使用restclient。然后,個人綜合了一下,對于java編程,建議采用 High-level-rest-client 的方式操作ES集群

  • High-level REST client 改變
    已刪除接受Header參數的API方法;Cluster Health API默認為集群級別
  • 參考文章
    參考文章

    總結

    以上是生活随笔為你收集整理的ElasticSearch7.x「新特性」的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。