2017-04-26 64 views
0

在数据我索引到Elasticsearch场,我有被代表的年范围内,像1948-1999-2002让ElasticSearch处理包含范围

领域有没有一种方法,使弹性解释这些值来使任何包含在该范围内的年份都可搜索?

例子:
的文件有一个字段中指定yearRange包含值1999-2001 如果我搜索q=yearRange:2000,我想要的文件相匹配。

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

Elastic 2.4是使用中的版本。

+0

我认为这在索引时更好处理。意思是,做正确的事情,并在两个单独的领域索引这些年份。然后,运行范围查询将变得更加容易和高效。 –

+3

另外,如果有机会升级到ES 5,范围类型[原生支持](https://www.elastic.co/guide/en/elasticsearch/reference/current/range.html) – Val

+1

如果您将“start “和”结束“几年,那么你可以创建一个过滤器。处理缺少的开始和结束值使得它有点棘手。 – NikoNyrh

回答

0

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

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