通过多个属性限制结果

时间:2013-08-17 23:23:24

标签: elasticsearch

我有记录,版本,标题和过期字段的数据。 Record是一个非唯一字段,每个记录可以有多个版本。

在搜索结果中,我只需显示每个版本中的一个。

因此,可以按标题搜索特定日期之前/之前的文章,但只返回每个版本的一个结果。

例如,鉴于此数据:

{"record": 1, "version": 1, "title": "Hello", "expires": "2011-08-17 00:00:00"},
{"record": 1, "version": 2, "title": "Hello", "expires": "2012-08-17 00:00:00"},
{"record": 2, "version": 1, "title": "Hello world", "expires": "2010-08-17 00:00:00"},
{"record": 2, "version": 2, "title": "Hello world", "expires": "2011-08-17 00:00:00"},
{"record": 2, "version": 3, "title": "Hello world", "expires": "2012-08-17 00:00:00"},

在2012-08-18之前/之前搜索标题中包含“Hello”的文档,应返回:

{"record": 1, "version": 2, "title": "Hello", "expires": "2012-08-17 00:00:00"},
{"record": 2, "version": 3, "title": "Hello world", "expires": "2012-08-17 00:00:00"}

(每条记录的最新“版本”)。

有什么想法吗?

我是否必须在ES之外迭代结果? 谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

你想要的是字段折叠,它是Apache Solr拥有的少数功能之一,而ElasticSearch则没有。

http://wiki.apache.org/solr/FieldCollapsing

ElasticSearch中有很多关于此功能的请求,但尚未实现。