如果我的索引中有文档的历史记录,是否可以检索所有最新的文档? 因此,假设我有产品记录,并且具有 productid 属性"myprod"的产品出现了 5 次,数据略有不同,每次都有时间戳。 当我使用日期进行搜索时,我希望所有产品记录在该日期有效,即日期小于搜索日期并且是该产品的最大值。 在 SQL 中很容易。在 Azure 搜索中可能吗?如果我们必须移动,甚至是弹性搜索?
谢谢
当然可以在弹性搜索和 Azure 搜索中添加用于此目的的范围筛选器。
我假设您的数据被格式化为日期,在弹性搜索中,您所要做的就是
"filter": {
"range": {
"<the date field name>": {
"gte": "2018-01-01",
"lte": "2018-01-01"
}
}
}
和在 Azure 搜索中
filter=<the date field name> ge 2018-01-01T00:00:00-08:00 and <the date field name> le 2018-01-01T00:00:00-08:00
为了按照您的描述过滤记录,您需要做 3 件事:
- 按日期$filter(就像GD Vigneshwar已经建议的那样(
- $orderby日期
- 仅选取排序列表中首先出现的不同产品 ID
不幸的是,3.必须在客户端/服务器端发生。