ElasticSearch6.x或者7.x开启fielddata

博主用的ElasticSearch7,然后在对数据进行聚合分析时,报错了,然后查了好久的百度发现并没有合理的解释,最后跑到官网看文档问题才得以解决,博主报的错请看下图:
ElasticSearch6.x或者7.x开启fielddata_第1张图片
报这个错的原因是ElasticSearch的fielddata默认是关闭的,官网对fielddata解释是这样的:
Elasticsearch 加载内存 fielddata 的默认行为是 延迟 加载 。 当 Elasticsearch 第一次查询某个字段时,它将会完整加载这个字段所有 Segment 中的倒排索引到内存中,以便于以后的查询能够获取更好的性能。

对于小索引段来说,这个过程的需要的时间可以忽略。但如果我们有一些 5 GB 的索引段,并希望加载 10 GB 的 fielddata 到内存中,这个过程可能会要数十秒。 已经习惯亚秒响应的用户很难会接受停顿数秒卡着没反应的网站。
随着新分段的创建(通过刷新、写入或合并等方式), 启动字段预加载可以使那些对搜索不可见的分段里的 fielddata 提前 加载。

这就意味着首次命中分段的查询不需要促发 fielddata 的加载,因为 fielddata 已经被载入到内存。避免了用户遇到搜索卡顿的情形。

下面看解决方法

当我查了好久的百度后发现ElasticSearch5.x的解决方法是这样开启fielddata的:
PUT /index/_mapping/type
{
“properties”: {
“tags”:{
“type”: “text”,
“fielddata”: true
}
}
}
以上操作是在kibana中
ElasticSearch6.x或者7.x开启fielddata_第2张图片
当我们的版本为ElasticSearch6.x或者7.x时,像上面那样开启就会报错,请看下图:
ElasticSearch6.x或者7.x开启fielddata_第3张图片
这时解决方法如下:

PUT /index/_mapping
{
“properties”: {
“tags”:{
“type”: “text”,
“fielddata”: true
}
}
}
就比上面5.x方式少了一个type,就解决了
在这里插入图片描述
7.x的官网用列
ElasticSearch6.x或者7.x开启fielddata_第4张图片

你可能感兴趣的:(ElasticSearch7,ElasticSearch)