elasticsearch,match all,用于整数范围搜索?

时间:2015-03-16 01:34:55

标签: elasticsearch

假设我有一个字段来指示1到7之间的整数范围 (表示1至7岁)

(1,5)(2,7)

我还有一个特殊值all,表示ages don't matter

我想在elasticsearch中索引并搜索此字段。

当用户搜索all年龄时,我想基本上返回match_all 为弹性搜索索引提供支持此类搜索的适当值是什么?

当我们不确定年龄时,我也有该字段的空值。

2 个答案:

答案 0 :(得分:0)

我不相信Elasticsearch有一个'范围'字段类型,因此您要么使用字符串,例如"(1,5)",你在那里找不到2岁的年龄,或分成两个领域,例如" age_low"," age_high"。

有两个字段,如果年龄不重要,可以将它们留空,或将它们设置为愚蠢的值,例如: (0,200)。

答案 1 :(得分:0)

从性能角度来看,最好的方法是在字节字段中索引范围内的每个整数。由于字段可以包含数组,因此您只需搜索给定年龄并查找与给定年龄范围匹配的所有文档。对于“all”情况,只需将文档存储为0到150之间的值。

如果你想坚持当前的语法,你可以使用transforms来解析你的'(x,y)...'字符串并将值存储在索引中(但不是_source JSON文档) 。