elasticsearch5.0.0中插件的變化,文件系統和路徑的變化 原

Plugin changes

插件命令由bin/plugin修改爲bin/elasticsearch-plugin。插件的文檔結構也做了修改。所有的插件文件必須和elasticsearch評級的目錄中。如果你用工具生成,這種結構會自動生成。

插件隔離

隔離(isolation)選項已被刪除。每個插件都有它自己的類加載器。

網站的插件刪除

網站插件已被刪除。網站插件應該在Kibana插件中實現。

多播的插件刪除

已刪除多播。使用單播發現,或雲發現插件。

自定義查詢插件的實現

自定義查詢插件需要在QueryParser子類中實現fromXContent方法。插件實現自定義評分功能需要在scorefunctionparser子類中實現fromxcontent方法。

Delete-By-Query插件已移除,現在在ES的核心中用Delete By Query接口來實現。當刪除時間比較長的時候,可以通過cancel接口取消。

請求:POST secilog/_delete_by_query

參數:

{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

 

返回值類似:

{
  "took" : 147,
  "timed_out": false,
  "deleted": 119,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1.0,
  "throttled_until_millis": 0,
  "total": 119,
  "failures" : [ ]
}

取消接口

請求:POST _tasks/task_id:1/_cancel

attachments插件被ingest-attachment插件代替

JAVA系統屬性設置,在之前的JAVA系統屬性設置可以在插件腳本中-D參數直接使用。現在這種情況將不在允許,現在通過ES_JAVA_OPTS參數進行設置。

通過path.plugins設置自定義插件路徑將取消。

自定義腳本插件將通過ScriptPlugin實現,取消了以前的通過onModule實現。

自定義分詞插件通過AnalysisPlugin實現,取消了以前的通過onModule實現。

自定義映射插件通過MapperPlugin 實現,取消了以前的通過onModule實現。

自定義行爲插件通過ActionPlugin實現,取消了以前的通過onModule實現。

自定義RestHandler`s插件通過ActionPlugin實現,取消了以前的通過onModule實現。

自定義搜索插件通過SearchPlugin實現,取消了以前的通過onModule實現。

SearchParseElement接口將被移除。自定義請求部分只能通過擴展(ext)元素實現,通過SearchPlugin.SearchExtSpec提供在自定義解析器的附加部分插入自定義的內容,在SearchExtSpec中實現XContent語法。語法解析現在在協調節點。語法解析後的結果和搜索請求的其他部分會通過傳輸層到數據節點,然後存儲在搜索上下文中用於以後檢索。

測試自定義插件

ESIntegTestCase# pluginlist已被刪除,用Arrays.asList來代替,現在它不需要所有的插件都要用java 1.8來實現。

在2.X版本索引中的元字段_size在聚合,腳本和排序中不能使用,如果需要使用這些特性,請用5.X版本重建索引。

文件系統相關的變化

在2.X版本中,索引文件的子集是通過mmap打開。在5.X中,在64爲系統中所有的索引文件都是通過mmap打開,這可能會增加虛擬內存使用量,但影響不大,因爲這隻增加了地址空間的消耗的使用量,其他實際內存的使用情況和2.X類似。

磁盤上的數據的路徑

在之前的版本中,數據路徑通過path.data進行配置,實際的路徑包括集羣名稱。所以數據路徑的全路徑爲$DATA_DIR/$CLUSTER_NAME/nodes/$nodeOrdinal。在5.0中路徑中的集羣名稱將不建議使用,現在存儲的全路徑爲$DATA_DIR/nodes/$nodeOrdinal。但爲了兼容性,在啓動後系統會檢查集羣文件夾和文件夾中的數據是否存在,如果存在系統將會儘可能讀取數據。這個特想將在6.0中取消。

如果多個集羣實例公用一個數據路徑,需要在數據路徑下添加集羣名稱,這樣就可以保證不同的集羣存儲到不同的路徑下。

在5.0之前,當node.data: false和node.master: false設置的時候,系統是不寫入任何文件到到磁盤。在5.X中,系統需要寫入實例化節點ids標誌,需要節點來存儲這些信息。因此,所有的節點類型都將寫入一個小的狀態文件到他們的數據文件夾。

本文由賽克 藍德(secisland)原創,轉載請標明作者和出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章