Elasticsearch2.x Breaking changes
生活随笔
收集整理的這篇文章主要介紹了
Elasticsearch2.x Breaking changes
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
移除的特性
Rivers已經移除
Elasticsearch不再支持rivers,因為和ES2.0的一些特性相沖突,比如:同步動態mapping更新。 具體原因:https://www.elastic.co/blog/deprecating-riversFacets已經移除
Facets在ES1.0時就已經被標記為deprecated,可以用更加靈活強大的 aggregation框架,這也意味著Kibana3不能在ES2.0下運行。MVEL已經移除
MVEL腳本已經移除,默認的腳本語言現在是Groovy。Delete-by-query現在變為插件
在ES1.X中delete-by-query非??斓遣环€定,他可能會導致主分片的文檔和備份上的文檔不同。而且有可能導致系統OOM最終導致宕機。 現在這個特性可以被scroll API和bulk API所代替,這樣做可能會慢一點,但是更加安全。 目前有一些運行時間長的delete-by-query任務不能被取消,所以delete-by-query還是可以作為插件使用,安裝插件方法 ./bin/plugin install delete-by-queryMulticast Discovery(組播)現在變為插件
現在默認的發現機制是unicast(單播),作為默認設置ES會檢查前5個端口。如果你還想繼續使用組播功能,可以安裝: ./bin/plugin install discovery-multicast_shutdown API
_shutdown api已經被移除并且沒有其他替代的api,節點的管理可以通過操作系統和 start/stop腳本來實現。murmur3現在變為插件
可以手動安裝: ./bin/plugin install mapper-murmur3_size現在變為插件
以前_size作為表示索引文檔時文檔的json串的大小,現在已經被移除。可以通過安裝插件實現: ./bin/plugin install mapper-sizeBulk UDP
UDP API已經移除,現在只能使用標準的 bulk API。
Network changes(網絡配置變化)
綁定localhost
ES2.X默認只綁定localhost,當然也會嘗試綁定127.0.0.1(IPv4)和[::1](IPv6)。這個改變將阻止ES自動嘗試連接你網絡內的其他ES節點,除非你明確指定了ES節點地址。在生產環境你必須指定network.host參數??梢栽趀lasticsearch.yml中配置或者在命令行啟動參數中指定: bin/elasticsearch --network.host 192.168.1.5 bin/elasticsearch --network.host _non_loopback_該參數的完整設置可參見:https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.htmlMulticast removed(組播移除)
組播已經被移除(盡管可以通過插件實現)。當ES綁定localhost時會使用單播連接在transport.tcp.port指定的端口的前5個,默認配置是9300-9400。 這在開發階段可以讓開發人員做到0配置自動組成集群,但在生產環境需要提供一份單播的hosts列表,比如: discovery.zen.ping.unicast.hosts: [ 192.168.1.2, 192.168.1.3 ]你不需要列出集群中所有的節點作為單播列表,但是你必須至少指定一定數量的具有被選舉為master資格的節點地址。比如在一個有3個專用的master節點的大集群中,建議列出全部的這3個幾點地址。Mapping changes(映射變化)
沖突字段映射
在同一個索引的不同類型的同名字段中,是不允許出現不同映射(mapping)的。在以下幾種參數中會拋出異常:copy_to、dynamic、enabled、ignore_above、include_in_al和properties。如下: PUT my_index {"mappings": {"type_one": {"properties": {"name": { "type": "string"}}},"type_two": {"properties": {"name": { "type": "string","analyzer": "english"}}}} }字段將不能再通過短名引用
字段不能在使用短名引用,必須指定全路徑,比如: PUT my_index {"mappings": {"my_type": {"properties": {"title": { "type": "string" }, <--- 1"name": {"properties": {"title": { "type": "string" }, <--- 2"first": { "type": "string" },"last": { "type": "string" }}}}}} }Type name prefix(類型名)前綴已移除
在ES1.X中,在url中不指定type可以在搜索字段名上指定前綴,如: GET my_index/_search {"query": {"match": {"my_type.some_field": "quick brown fox"}} }在ES2.X中,必須在url中指定type,搜索字段名上則不再加前綴: GET my_index/my_type/_search {"query": {"match": {"some_field": "quick brown fox" }} }字段名不再支持包含點“.”
在ES1.X中:PUT my_index {"mappings": {"my_type": {"properties": {"foo.bar": { "type": "string"},"foo": {"properties": {"bar": { "type": "string"}}}}}} }foo.bar和bar是兩個字段,在ES2.X foo.bar這種定義不再支持。
Type相關改變
Type元數據字段
元數據字段的配置項已經被移除,原因是為了他們更加穩定:- _id字段將不能再被改變,如果需要按該字段排序需要使用_uid字段
- _type字段將不能再被改變
- _index字段將不能再被改變
- _routing配置必須明確指定需要開啟
- _field_names配置僅限于disable字段
- _size
- _timestamp默認配置開啟,使用默認格式
- _boost已經移除
- _analyzer已經移除
在ES2.X中則改為: PUT my_index {"mappings": {"my_type": {"_routing": {"required": true },"properties": {"group": {"type": "string"}}}} }PUT my_index/my_type/1?routing=bar {"group": "foo" }
_timestamp和_ttl標記為deprecated
Analyzer映射
以前index_analyzer和search_analyzer可以分開設置,它們是平級的?,F在只能設置analyzer和search_analyzer它們的關系是analyzer > search_analyzer,當在查詢中不指定search_analyzer時默認采用analyzer指定的值。Boolean fields
以前bool字段采用string類型 F = false ,T = true,現在采用數字類型0 = false,1 = true轉載于:https://www.cnblogs.com/chennanlcy/p/6591787.html
總結
以上是生活随笔為你收集整理的Elasticsearch2.x Breaking changes的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二章作业第2题--苏志华
- 下一篇: 基本设计说明书