【问题标题】:elasticsearch, match all, for integer range search?elasticsearch,匹配所有,整数范围搜索?
【发布时间】:2015-03-16 21:04:06
【问题描述】:

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

(1,5) (2,7)

我还有一个特殊的值all,意思是ages don't matter

我想在 elasticsearch 中索引和搜索这个字段。

当用户使用all 年龄搜索时,我想基本上返回match_all
放入弹性搜索索引以支持这种类型的搜索的正确值是什么?

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我不相信 Elasticsearch 具有“范围”字段类型,因此您要么被字符串困住,例如“(1,5)”,你找不到 2 岁的地方,或者分成两个字段,例如“age_low”、“age_high”。

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

    【讨论】:

      【解决方案2】:

      从性能的角度来看,最好的方法是对字节字段中范围内的每个整数进行索引。由于字段可以保存数组,因此您可以简单地搜索给定年龄并找到与给定年龄范围匹配的所有文档。对于“全部”情况,只需存储值从 0 到 150 的文档。

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

      【讨论】:

        猜你喜欢
        • 2014-11-18
        • 1970-01-01
        • 2013-09-11
        • 1970-01-01
        • 1970-01-01
        • 2012-12-27
        • 2021-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多