假设我有一个字段来指示1到7之间的整数范围 (表示1至7岁)
(1,5)(2,7)
我还有一个特殊值all
,表示ages don't matter
我想在elasticsearch中索引并搜索此字段。
当用户搜索all
年龄时,我想基本上返回match_all
为弹性搜索索引提供支持此类搜索的适当值是什么?
当我们不确定年龄时,我也有该字段的空值。
答案 0 :(得分:0)
我不相信Elasticsearch有一个'范围'字段类型,因此您要么使用字符串,例如"(1,5)",你在那里找不到2岁的年龄,或分成两个领域,例如" age_low"," age_high"。
有两个字段,如果年龄不重要,可以将它们留空,或将它们设置为愚蠢的值,例如: (0,200)。
答案 1 :(得分:0)
从性能角度来看,最好的方法是在字节字段中索引范围内的每个整数。由于字段可以包含数组,因此您只需搜索给定年龄并查找与给定年龄范围匹配的所有文档。对于“all”情况,只需将文档存储为0到150之间的值。
如果你想坚持当前的语法,你可以使用transforms来解析你的'(x,y)...'字符串并将值存储在索引中(但不是_source JSON文档) 。