使ElasticSearch处理包含范围

时间:2017-04-26 13:00:41

标签: elasticsearch

在我索引到Elasticsearch的数据中,我有表示年份范围的字段,例如1948-1999-2002

有没有办法让Elastic解释这些值以使搜索范围中包含的任何年份都可搜索?

示例:
文档有一个名为yearRange的字段,其中包含值1999-2001 如果我搜索q=yearRange:2000,我希望文档匹配。

我可以看到你可以通过让脚本生成一个多年的数组来解决它,但我想知道是否还有其他方法。

Elastic 2.4是正在使用的版本。

1 个答案:

答案 0 :(得分:0)

如果年份是连续的,那么您应该存储开始年份和结束年份,并且您可以轻松地对其进行范围查询。如果日期不是连续的,那么您可以将每个区间表示为嵌套文档,并以相同的方式对其进行查询。

每年生成并将其放入数组中将产生额外的负载,因为现在每年都会要编入索引,将为他们创建doc_values,你的_source将会很重等等。如果你可以用更少的数据执行查询,那么你应该去做。