我有记录,版本,标题和过期字段的数据。
记录是一个非唯一字段,每个记录可以有多个版本。
在搜索结果中,我只需要显示每个版本之一。
因此,可以按标题搜索特定日期/之前的文章,但每个版本只返回一个结果。
例如,给定此数据:
{"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"},
搜索标题中包含“Hello”且在2012-08-18之前或之前过期的文档,应返回:
{"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之外的结果?
谢谢阅读!
最佳答案
您想要的称为字段折叠,它是Apache Solr拥有而ElasticSearch却没有的少数几个功能之一。
http://wiki.apache.org/solr/FieldCollapsing
ElasticSearch中对此功能有很多要求,但尚未实现。
关于elasticsearch - 通过多个属性限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18294240/