本文汇总了开源Elasticsearch相关的常见问题。
- 如何配置索引线程池大小?
- 出现内存溢出OOM(OutOfMemory)的错误,如何处理?
- 如何手动对shard进行操作?
- Elasticsearch的缓存清除策略有哪些?
- 如何重新分配索引分片(reroute)?
- 索引查询时,提示
statusCode: 500
的错误,如何处理? - 如何修改自动创建索引
auto_create_index
参数? - OSS快照大概需要多久?
- 创建索引时,如何设置分片数?
- 自建Elasticsearch迁移数据,使用elasticsearch-repository-oss插件遇到如下问题,如何解决?
- 如何调整Kibana可视化展示数据的时区?
- Elasticsearch的Term查询适用于哪种类型的数据?
- 使用Elasticsearch的别名(aliases)功能需要注意哪些问题?
- 在进行查询过程中,出现以下报错,如何处理?
- 如何批量删除索引?
- script.painless.regex.enabled参数能否修改?
- 如何修改Elasticserach的mapping、主分片和副本分片数量?
如何配置索引线程池大小?

出现内存溢出OOM(OutOfMemory)的错误,如何处理?
curl -u elastic:<password> -XPOST "localhost:9200/<index_name>/_cache/clear?pretty"
变量名 | 说明 |
---|---|
<password> |
阿里云Elasticsearch实例的密码,为您在创建Elasticsearch实例时设置的密码,或初始化Kibana时指定的密码。 |
<index_name> |
索引名称。 |
如何手动对shard进行操作?
使用reroute API,或通过Cerebro进行操作。具体操作步骤,请参见Cluster reroute API和Cerebro。
Elasticsearch的缓存清除策略有哪些?
- 清除全部缓存
curl localhost:9200/_cache/clear?pretty
- 清除单一索引缓存
curl localhost:9200/<index_name>/_cache/clear?pretty
- 清除多索引缓存
curl localhost:9200/<index_name1>,<index_name2>,<index_name3>/_cache/clear?pretty
如何重新分配索引分片(reroute)?
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
"commands" : [ {
"move" :
{
"index" : "test", "shard" : 0,
"from_node" : "node1", "to_node" : "node2"
}
},
{
"allocate" : {
"index" : "test", "shard" : 1, "node" : "node3"
}
}
]
}'
索引查询时,提示statusCode: 500
的错误,如何处理?
- 查询正常:说明该错误大概率是由于索引名称不规范引起的。规范的索引名称只包含英文、下划线和数字,您可以通过修改索引名称来修复此问题。
- 查询不正常:说明索引或集群本身存在问题。请确保集群中存在该索引,且集群处于正常状态。
如何修改自动创建索引auto_create_index
参数?
PUT /_cluster/settings
{
"persistent" : {
"action": {
"auto_create_index": "false"
}
}
}
auto_create_index
参数的默认值为false,表示不允许自动创建索引。一般建议您不要调整该值,否则会引起索引太多、索引Mapping和Setting不符合预期等问题。
OSS快照大概需要多久?
在集群的分片数、内存、磁盘和CPU等正常的情况下,80 GB的索引数据进行OSS快照,大约需要30分钟。
创建索引时,如何设置分片数?
建议您将单个分片存储索引数据的大小控制在30 GB以内,不要超过50 GB,否则会极大降低查询性能。根据上述建议,最终分片数量 = 数据总量/30 GB。
- 分片数过多会导致需要打开的文件比较多。由于分片是存储在不同机器上的,因此分片数越多,各个节点之间的交互也就越多,导致查询效率降低。
- 分片数过少会导致单个分片索引过大,降低整体的查询效率。
自建Elasticsearch迁移数据,使用elasticsearch-repository-oss插件遇到如下问题,如何解决?
问题:ERROR: This plugin was built with an older plugin structure. Contact the plugin author to remove the intermediate "elasticsearch" directory within the plugin zip
。
解决方案:将elasticsearch改名为elasticsearch-repository-oss, 然后复制到plugins目录下。
如何调整Kibana可视化展示数据的时区?


Elasticsearch的Term查询适用于哪种类型的数据?
使用Elasticsearch的别名(aliases)功能需要注意哪些问题?
需要将别名里索引的分片控制在1024个以内。
在进行查询过程中,出现以下报错,如何处理?
报错:"type": "too_many_buckets_exception", "reason": "Trying to create too many buckets. Must be less than or equal to: [10000] but was [10001]
问题分析与解决方案:请参见控制聚合中创建的桶数。除了调整业务聚合的size大小,您还可以参见Increasing max_buckets for specific Visualizations来处理。
如何批量删除索引?
PUT /_cluster/settings
{
"persistent": {
"action.destructive_requires_name": false
}
}
script.painless.regex.enabled参数能否修改?
此参数默认值是false,不建议修改。如果要在painless脚本中使用正则表达式,需要在elasticsearch.yml中设置script.painless.regex.enabled参数为true。由于正则表达式会消耗大量资源,官方不建议使用,因此没有打开此参数。
如何修改Elasticserach的mapping、主分片和副本分片数量?
- 已经创建的索引修改mapping,建议通过reindex重建索引。
说明 mapping中支持的字段类型,请参见 Data field type。
- 已经创建的索引无法修改主分片,建议通过reindex重建索引修改。
说明 建议您在创建索引前规划好分片数,减少后期调整。
- 已经创建的索引修改副本数,可以参考以下命令修改:
PUT test/_settings { "number_of_replicas": 0 }