elasticsearch.yml
设置最大分片数 (默认1000):
cluster.max_shards_per_node: 1000000
kibana
设置默认查询数量(深度分页问题)
PUT movies/_settings
{
"index" : {
"max_result_window" : 20000
}
}
jvm.options
设置堆内存大小
-Xms8g
-Xmx8g
jvm heap分配:es7.6版本默认1GB,这个值太小,很容易导致OOM。Jvm heap大小不要超过物理内存的50%,最大也不要超过32GB(compressed oop),它可用于其内部缓存的内存就越多,但可供操作系统用于文件系统缓存的内存就越少,heap过大会导致GC时间过长。
修改jvm heap有两种方式:
① 在ES进程启动的时候加上参数:ES_JAVA_OPTS="-Xms512m -Xmx512m",或在jvm.options中修改-Xms和-Xmx,注意最大值和最小值要相同,避免jvm heap在运行中resize,这是一个非常耗性能的过程。
② 修改环境变量:ES_HEAP_SIZE,环境变量的优先级高于jvm.options中的设置的数值。
关于es映射mapping中的enabled,store,index参数的理解 - Elastic 中文社区
Mapping
keyword类型字段可以设置ignore_above ,表示最大的字段值长度,超出这个长度的字段将不会被索引,但是会存储
PUT /jv_app_base_spu_uat2/_mapping
{
"properties" : {
"descText" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 2048
}
}
}
}
}