运行环境:10数据节点+3主节点。版本7.6.2。数据节点64G内存+16核CPU+SSD。索引110个,总数量3.33T。
查询的索引 10个分片,2.5亿数据(实际为全国工商企业的基本信息)。查询的字段是默认分词,standard,查询语句如下:
 
求教各位大佬,要求1秒内响应
																				查询的索引 10个分片,2.5亿数据(实际为全国工商企业的基本信息)。查询的字段是默认分词,standard,查询语句如下:
GET base/_search
{ 
  "track_total_hits": true, 
  "query": {
   "match_phrase": {
     "entName": "信息技术"
   }
  },"size": 20
} "took" : 4585,
  "timed_out" : false,
  "_shards" : {
    "total" : 10,
    "successful" : 10,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 431330,
      "relation" : "eq"
    },求教各位大佬,要求1秒内响应

 
	
3 个回复
Charele - Cisco4321
赞同来自:
huahualal
赞同来自:
zmc - ES PAAS、JuiceFS
赞同来自:
1.数据预热,提前加载好缓存,如果你们的数据大多是热数据,那缓存后会快很多
2.如果响应时间要求不高,且qps比较高,可以通过加cpu配置缓解问题
3.使用term查询,配置自定义词库,利用分词解决问题
4.先filter,match全文检索找到结果集合,然后在结果集合中取前x条进行match_phrase重新打分,根据分数大到小返回;这个方案线上测过,对于很复杂的请求优化很有限,你这个相对简单的请求可以测一把看看...