用了Elasticsearch,一口气上5T

我这个特殊场景该怎么优化呢,多field主要使用minimum_should_match

Elasticsearch | 作者 alphabing | 发布于2018年01月23日 | 阅读数:5773

有大量Field,目前上百,其存储内容多如,field1->(0、1、2、3等数字,非数组),目前测试用总数据量千万级别,实际的生产环境可能每天要产生100万条数据。
有大量should语句如下,例子中只有3个,实际上可能是几十上百个,minimum_should_match的值也基本不会低于50%,由于field比较多,效率比较慢,测试环境查询操作随着数据量和Field增加明显变慢:
{
"should":[
{
"match": {
"field1": 1
}
},
{
"match": {
"field2": 0
}
},
{
"match": {
"field3": 3
}
}
],
"minimum_should_match": "70%"
}
已邀请:

medcl - 今晚打老虎。

赞同来自: alphabing

  1. 把 match 换成 term。
  2. 如果都是 should,是不是可以把这么多字段转成一个字段,然后变成:字段名:name;value:field1_1,然后查询的时候,按最后一个字段拼装类似的 filed_1 值进行查询,应该要快很多。

alphabing

赞同来自:

怎么办

要回复问题请先登录注册