《Elasticsearch全文检索优化:从基础到高级技巧》
Elasticsearch全文检索优化基础配置www.hynrj.com.cn
合理设置分片和副本数量,分片数建议与节点数一致,避免过度分配。副本数根据读写负载调整,通常1-2个副本可平衡性能与容错。www.hotrac.cn
配置合适的分析器(analyzer),标准分析器适合多数场景,中文场景推荐IK分词器。自定义分析器时可组合character filters、tokenizer和token filters。www.gmprinting.cn
PUT /my_index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": ["lowercase"]
}
}
}
}
}
索引映射优化策略www.efeite.com.cn
明确字段数据类型,避免动态映射导致性能损耗。text类型字段默认会生成keyword类型的子字段,若不需要可关闭此特性。www.jumao.cc
对不参与搜索的字段设置"index": false,对需要精确匹配的字段使用keyword类型。日期字段指定format避免自动识别开销。www.js-valve.cn
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word",
"fields": {
"raw": {
"type": "keyword"
}
}
},
"create_time": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
}
查询性能优化技巧www.sjzlybj.com
使用bool查询组合多个条件,must/filter用于AND逻辑,should用于OR逻辑。filter查询会缓存结果,适合重复执行的过滤条件。www.huadamotor.com
对范围查询使用date_histogram聚合替代range查询,对高频词使用constant_score提升查询效率。合理设置terminate_after参数限制早期终止。www.china-sts.com
GET /_search
{
"query": {
"bool": {
"must": {
"match": { "content": "分布式" }
},
"filter": {
"range": { "create_time": { "gte": "now-1d/d" } }
}
}
},
"terminate_after": 1000
}
高级索引管理技术www.ouxijie.com
冷热数据分离部署,热节点使用SSD并配置更高规格。通过index.routing.allocation设置将新索引分配到热节点。www.sh-bq.com
定期执行_forcemerge合并分段,对只读索引设置index.blocks.write为true。使用alias实现零停机索引切换,通过rollover自动管理时序索引。www.sytncp.com
POST /logs-000001/_rollover
{
"conditions": {
"max_age": "7d",
"max_docs": 1000000
}
}
监控与持续调优www.zkpda.cn
通过_cat/indices?v监控索引状态,关注segments.count和memory_in_bytes指标。使用Profile API分析查询耗时,优化评分高的查询子句。www.pneuflex.cn
定期清理旧索引,设置ILM策略自动管理生命周期。调整JVM堆大小不超过物理内存50%,避免频繁GC影响性能。www.freeteklcd.com