首页  

elasticsearch 优化点     所属分类 elasticsearch 浏览量 923
indices.memory.index_buffer_size
默认 jvm大小的10% ,可增大


segment merge
增加 Index Refresh 间隔 , 减少 Segment Merge 次数
only_expunge_deletes设置为true ,合并过程会把删除的数据清理掉

SearchType
默认 QUERY_THEN_FETCH

QUERY_THEN_FETCH
先向所有的分片发请求,各分片只返回文档的相似度得分和文档的ID,然后协调节点按照各分片返回的分数进行重新排序和排名 
根据文档ID获取文档的详细信息 

QUERY_AND_FETCH
协调节点向所有分片发送查询请求,各分片将文档的相似度得分和文档的详细信息一起返回
协调节点进行重新排序,取出需要返回给客户端的数据
只需要在分片中查询一次,性能较好


DFS_QUERY_THEN_FETCH
与 QUERY_THEN_FETCH 类似,但它包含一个额外的阶段,在初始查询中执行全局的词频计算,以使得更精确地打分,从而让查询结果更相关。
QUERY_THEN_FETCH 使用的是分片内部的词频信息,而 DFS_QUERY_THEN_FETCH 使用公共的词频信息,相比 QUERY_THEN_FETCH 性能更低

DFS_QUERY_AND_FETCH 与 QUERY_AND_FETCH 类似,不过使用的是全局的词频

search_type=query_and_fetch

bool 查询的 filter 筛选
filter 不参与相关性评分,查询子句可以被系统缓存,性能高于普通的query查询
bool查询中支持4种子句,分别是filter must must_not should
filter和must_not属于过滤器,过滤器查询先于其它查询执行


预排序 IndexSorting
ES 6.x之后新增预排序功能,索引在创建之前可以指定数据写入后的排序方式,
当query时指定的排序方式和预排序逻辑一致时将能够很快获得排序结果,需要注意的是查询时不能开启total值


磁盘 尽量使用SSD盘  或者挂载多块盘提升io性能

设置独立的聚合节点
# 查询聚合节点配置 
node.master:false
node.data:false
node.ingest:false

查询中断
teminate_after 指定每个 shard 匹配 N 条记录后返回,设置查询超时时间 timeout  
{ 
    "timeout": "10s",
    "terminate_after": 1000,
    "query": {
        
    }
}

调整聚合方式
默认深度优先聚合
"collect_mode" : "breadth_first"

depth_first 直接进行子聚合的计算
breadth_first 先计算出当前聚合的结果,针对这个结果在对子聚合进行计算

索引冷热分离

# cat elasticsearch.yml    // 配置文件设置tag区分
node.attr.tag: cold/hot   

# bin/elasticsearch -d -Enode.attr.box_type=hot  //启动设置



其他配置说明

cluster.name  
集群名 自动发现同一网段下集群名相同的节点


node.nam:"node1" 
节点名,同一个集群中不能重复。名称设置后,不能改 

noed.master:true
指定节点是否有资格被选举成为 Master  默认 True 

node.data:true 
指定节点是否存储索引数据,默认 True 

index.number_of_shards:5
索引分片个数,默认 5 。可以在创建索引时设置 ,如果数据量不大,设置成 1 效率最高。

index.number_of_replicas:1
索引副本个数,默认为1 个 

path.conf:/path/to/conf
配置文件存储路径,默认   conf  目录


path.data:/path/to/data1,/path/to/data2
设置索引数据存储路径,默认 data 目录 ,注意不要使用默认值,若 ES 升级,有可能丢失数据 

path.logs:/path/to/logs
设置日志文件的存储路径,默认 logs 

path.plugins:/path/to/plugins
设置第三方插件的路径,默认 plugins  

bootstrap.mlockall:true
锁定内存,保证不 Swap

network.bind_host:192.168.0.1
绑定的 IP 地址 , 默认 0.0.0.0

network.publish_host:192.168.0.1

network.host:192.168.0.1
同时设置 bind_host 和 publish_host 这两个参数


http.port:9200
对外服务的 HTTP 端口,默认 9200
节点需要配置两个端口,对外提供服务端口,集群内部使用的端口

transport.tcp.port:9300
集群节点间通讯的 TCP 端口,默认 9300 

transport.tcp.compress:true
节点间传输数据时是否压缩,默认 false 

index.merge.scheduler.max_thread_count:1    
索引merge最大线程数

index.translog.durability:async             
异步写硬盘,提升写性能

index.translog.sync_interval:120s           
translog 间隔时间

thread_pool.bulk.size:20                    
写入线程个数  

thread_pool.bulk.queue_size:1000            
写入线程队列大小

index.refresh_interval:300s                 
index刷新间隔

discovery.zen.minimum_master_nodes:1
选举 Master 节点时需要参与的最少的候选主节点数,默认 1 
建议设置为(master_eligible_nodes/2)+1   , master_eligible_nodes 表示集群中的候选主节点数


discovery.zen.ping.timeout:3s
自动发现其他节点时 Ping 连接的超时时间,默认 3 秒

上一篇     下一篇
kafka核心知识点

java中的list

arthas 异常排查技巧

Java异常知识点

mysql explain 简介

mysql中的浮点数