ES是设计成一个搜索引擎的,只擅长返回匹配查询较少文档,若是须要返回很是多的文档须要使用Scroll。html
由于ES是基于Lucene来索引和存储数据的,因此对稠密的数据更有效。Lucene可以有效的肯定文档是经过一个整数的文档id,不管有没有数据都会话费一个字节存储id。稀疏主要影响norms和doc_values,一些能够避免稀疏的推荐:express
使用相同的字段名来保存一样的数据。缓存
而且每一个请求不超过几十M,由于太大会致使内存使用过大并发
多进程或者线程,若是看到TOO_MANY_REQUESTS (429)
和EsRejectedExecutionException
则说明ES跟不上索引的速度,当集群的I/O或者CPU饱和就获得了工做者的数量。app
index.refresh_interval
默认是1s,能够改为30s以减小合并压力。less
index.refresh_interval to -1 and index.number_of_replicas to 0elasticsearch
禁用swappingide
缓存是用来缓存I/O操做的,至少用通常的内存来运行ES文件缓存。高并发
indices.memory.index_buffer_size
一般是JVM的0.1,确保他足够处理至多512MB的索引。性能
至少给可用内存的一半到文件系统缓存。
避免连接,嵌套会使查询慢几倍,而亲自关系能使查询慢几百倍,因此若是一样的问题能够经过没有连接的非规范回答就能够提高速度。
不明觉厉
数值型数据不必定要映射成整形或者长整型
若是实在要使用,就用painless和expressions
https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html
不要强势合并正在写的索引
index.store.preload
,若是内存不是很大会使搜索变得缓慢。
“index”:false
”norms”:false
"indexe_options":"freqs"
_all
best_compression
byte,short,integer,long
half_float,float,double
https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html#mappings
https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules.html#dynamic-index-settings
https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-scroll.html