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之前/到期含 「你好」 的文件,應返回:
{"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',但它將包含一個'versions'字段,它維護一個有'version_num'字段的有序列表。我想你可能可以使用某種腳本來檢索當時最新的項目......也許? –
我不認爲你所問的是直接可能的。另外@James,es不僅可以返回嵌套文檔的'匹配'部分,如果它是一個命中,則整個文檔將被返回。 – ramseykhalaf
對不起@JamesAddison我誤解了你的評論(子對象變成了嵌套文檔)。是的,我認爲這會奏效。否則,你可以有一個布爾「最新」的標誌和過濾器。決定是在索引時間還是在搜索時間完成額外的工作。 – ramseykhalaf