ElasticSearch7.x「新特性」

背景

原来一直用的ES6,刚转到ES7踩得一些坑,和一些新特性的学习过程。

1. ES 数据库的存储结构变化:去除了Type

  • es6时,官方就提到了es7会删除type,并且es6时已经规定每一个index只能有一个type。在es7中使用默认的_doc作为type,官方说在8.x版本会彻底移除type。
  • api请求方式也发送变化,对索引的文档进行操作的时候,默认使用的Type是 _doc
  • 如获得某索引的某ID的文档:GET index/_doc/id其中index和id为具体的值

2.创建索引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
        }
      }
    }
  }
}

3.默认配置变化:默认节点名称为主机名,默认分片数为1,不再是5

4.查询相关速度优化:Weak-AND算法

  • weak-and算法,又称为Wand算法, 输入是n个倒排队列,输出top K个得分最高的文档doc

5.彻底废除 _all 字段的支持,为提升性能默认不在支持全文检索

6.新增的功能

6.1 新增应用程序主动检测功能,搭配对应版本的kibana,用户可监测应用服务的健康状态,并在出现问题后及时发出通知

6.2 新增间隔查询(Intervals Queries),用户可设置多字符串在文档中出现的先后顺序进行检索

6.3 自带jdk,所以在安装ES时不再需要单独下载和配置JAVA_HOME。

取消Query结果中的Hits Count的支持(聚合查询除外),使得查询性能大幅提升。这就意味着,每次查询后将不能得到精确的结果集数量

6.4 的集群协调子系统,缩减配置项提升稳定性。时间戳纳秒级支持,提升数据精度

 移除 minimum_master_nodes 参数,让 Elasticsearch 自己选择可以形成仲裁的节点。

典型的主节点选举现在只需要很短的时间就可以完成。

集群的伸缩变得更安全、更容易,并且可能造成丢失数据的系统配置选项更少了。

节点更清楚地记录它们的状态,有助于诊断为什么它们不能加入集群或为什么无法选举出主节点。

7.不会再有OOM(内存溢出)的情况,JVM引入了新的circuit breaker(熔断)机制,当查询或聚合的数据量超过单机处理的最大内存限制时会被截断,并抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值