Elasticsearch之常见问题
一. 聚合操作时,报Fielddata is disabled on text fields by default
GET /megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": {"field": "interests" }
}
}
} { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [interests] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } ], "type": "search_phase_execution_exception", "reason": "all shards failed", "phase": "query", "grouped": true, "failed_shards": [ { "shard": 0, "index": "megacorp", "node": "sNvWT__lQl6p0dMTRaAOAg", "reason": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [interests] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } } ], "caused_by": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [interests] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.", "caused_by": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [interests] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } } }, "status": 400 }
text类型的字段在查询时使用的是在内存中的称为fielddata的数据结构。这种数据结构是在第一次将字段用于聚合/排序/脚本时基于需求建立的。
它通过读取磁盘上每个segmet上所有的倒排索引来构建,反转term和document的关系(倒排),并将结果存在Java堆上(内存中)。(因此会耗费很多的堆空间,特别是在加载很高基数的text字段时)。一旦fielddata被加载到堆中,它在segment中的生命周期还是存在的。
因此,加载fielddata是一个非常消耗资源的过程,甚至能导致用户体验到延迟.这就是为什么 fielddata 默认关闭。
PUT megacorp/_mapping/employee/
{
"properties": {
"interests": {
"type": "text",
"fielddata": true
}
}
}
二.Too many dynamic script compilations within, max: [75/5m]
需要设置索引允许最大编译速度
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'{ "transient": { "script.max_compilations_rate": "100000/1m"}}'
三. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
在root用户下
临时修改:
sysctl -w vm.max_map_count=262144 sysctl -p
# 重启恢复原值
永久修改:
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
四. the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
cluster.name: "docker-cluster"
network.host: 0.0.0.0 # custom config
node.name: "node-1"
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]
# 开启跨域访问支持,默认为false
http.cors.enabled: true
# 跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: /.*/ 重点: node.name 和 cluster.initial_master_nodes 设置
rm -rf /elasticsearch/data/*
同一个index新增type报错 Rejecting mapping update to [website] as the final mapping would have more than 1 type: [blog2, blog]
7之后, 已经不推荐使用type,所以在添加数据的时候可以不指定type即可
七.

原因: 磁盘空间不足, 超过95%, 则开启只读模式, 可以进行数据删除 ( df -h 查看)
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
八. Can't update non dynamic settings [[index.analysis.filter
场景: 在为索引添加分词器的时候, 发生报错
解决方案: 先关闭索引, 再进行设置, 设置完成之后, 重新打开索引即可
# 关闭索引
POST mp_account2/_close # 设置分词器
PUT mp_account2/_settings
{
"index": {
"analysis": {
"analyzer": {
"ik_pinyin_analyzer": {
"type": "custom",
"tokenizer": "ik_smart",
"filter": "pinyin_filter"
}
},
"filter": {
"pinyin_filter": {
"type": "pinyin",
"keep_first_letter": false
}
}
}
}
} # 开启索引
POST mp_account2/_open
9. docker启动elasticsearch异常Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options
由于我的elasticsearch启动时使用的是docker-compose方式,并配置了config目录的挂载数据卷,而启动时宿主机的挂载数据文件夹中并没有jvm.options文件,因此出现该文件找不到的情况。
解决办法:
先将挂载数据卷配置注释,启动elasticsearch后将elasticsearch容器中的config/文件夹下的文件拷出到宿主机,重新启动即可。
1).将容器中文件拷出到宿主机挂载卷文件夹下
docker cp [容器ID]:容器文件路径 要拷贝的宿主机路径
例如我的:
docker cp 2a202fa:/usr/share/elasticsearch/plugins/ ./es/es-with-ik-plugins/
2).开启挂载卷配置,重新启动elasticsearch
Elasticsearch之常见问题的更多相关文章
- elasticsearch启动常见问题
原文:https://blog.csdn.net/qq_22211217/article/details/80740873 一.Exception in thread "main" ...
- ELK学习003:Elasticsearch启动常见问题
一.Caused by: java.lang.RuntimeException: can not run elasticsearch as root 这个错误,是因为使用root用户启动elastic ...
- Elasticsearch 5
Elasticsearch 5常见问题解决方案 安装运行 1.前置安装java8 jdk-8u112-linux-x64.rpm 下载地址:http://www.oracle.com/tech ...
- ELK Stack 笔记
ELK Stack ELK Stack ELK Stack ELK 介绍 架构 Elasticsearch 安装 常见问题 关闭 Elasticsearch Elasticsearch-head Ki ...
- ES 02 - 部署Elasticsearch单机服务 + 部署中的常见问题
目录 1 准备工作 1.1 安装JDK 1.2 下载安装包 1.3 创建elastic用户 2 启动ES服务 2.1 修改配置文件 2.2 启动服务 3 验证ES服务是否可用 4 关闭与重启服务 4. ...
- Elasticsearch 常见问题的解决思路
本文为es性能监控基础的扩展,大家可以先看下性能监控基础,熟悉下es的基本原理.为翻译性质文档,感谢原作者,原始文档地址 类似于汽车的运行方式,Elasticsearch旨在让用户快速上手和运行,而无 ...
- ElasticSearch 常见问题
ElasticSearch 常见问题 丈夫有泪不轻弹,只因未到伤心处. 1.说说 es 的一些调优手段. 仅索引层面调优手段: 1.1.设计阶段调优 (1)根据业务增量需求,采取基于日期模板创建索引, ...
- 搭建Elasticsearch集群常见问题
一.ES安装方法: Linux用户登录(bae),我们用的是5.3版本的包.从官网下载: curl -L -O https://artifacts.elastic.co/downloads/elast ...
- 安装elasticsearch 5.x, 6.x 常见问题(坑)的解决
本人在elasticsearch 5.x, 6.x 安装过程中遇到了一些问题: 警告提示 [2016-11-06T16:27:21,712][WARN ][o.e.b.JNANatives ] una ...
- 内存吞金兽(Elasticsearch)的那些事儿 -- 常见问题痛点及解决方案
1.大数据量的查询效率如何保证: 查询的流程:往 ES 里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 Filesystem Cache 里面去 最佳的情况 ...
随机推荐
- Qml 实现瀑布流布局
[写在前面] 最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着 Qml 有没有类似实现. 结果百度了一圈也没有( T_T Qml 凉了凉了 ),于是,我按照自己理解 ...
- RxJS 系列 – Subject
前言 RxJS 两大概念 Observable 和 Subject. 上一篇介绍了 Observable 这篇继续接受 Subject. 参考 RxJS 建立 Observable 的基礎 - Obs ...
- C# – 6.0, 7.0, 8.0, 9.0 总结
前言 C# 这几年改了好几个版本, 多了许多语法糖,还带有 JavaScript / TypeScript 的味道了. 我觉得随着 blazor 的发展 (想取代前端开发 ?) 那 C# 必然需要更多 ...
- java基础 -IO流笔记
610,文件的基础知识 文件流 输入流和输出流都是相对 java程序内存 而言 611,创建文件 在D盘下创建文件. package com.hspedu.file; import org.junit ...
- 26岁女生转行车载测试1年,月入15K~
年前有朋友找工作,跟我说简历改了车载后,收到的打招呼翻了几倍,如今车载测试前景非常广阔,因为越来越多的汽车厂商正在开发新的可智能化的汽车,他们需要测试这些汽车的性能,安全性以及可靠性.车载测试技术可以 ...
- HEOI2024 题目转存
赛时测试数据下载 wind xor wormhole maze timeline sleep 题解参考 [省选联考 2024] 季风 题目背景 生活在二维平面的小 X 准备拜访小 Y,但由于气候的变化 ...
- 【赵渝强老师】什么是PL/SQL?
一.什么是PL/SQL? PL/SQL(Procedure Language/SQL)是oracle在标准的sql语言上的扩展.ql/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许私用条件语 ...
- AndroidQ 打通应用层到HAL层---(HIDL服务实现)
什么是HIDL HIDL 全称为HAL interface definition language(发音为"hide-l")是用于指定 HAL 和其用户之间的接口的一种接口描述语言 ...
- ssh建立github连接 基于ssh密钥
1. 建立公钥和私钥 ps:公钥放在github上面的,私钥放在自己本地电脑 : 先生成密钥:打开 gitbash 输入命令: ssh-keygen -t rsa -b 4096 -C "z ...
- webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全
webpack 的运行流程是一个串行的流程,从启动到结束会依次执行以下步骤 : 1. 初始化参数:在配置文件,读取并合并参数,得到最终的参数 : 2. 开始编译:拿着上一步的参数初始化 Compile ...