1

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

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

那么是否可以按标题搜索某个日期/之前的文章,但每个版本只返回一个结果。

例如,给定以下数据:

{"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 之外迭代结果?谢谢阅读!

4

1 回答 1

1

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

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

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

于 2013-08-20T08:51:06.487 回答