【问题标题】:Azure search window functionAzure 搜索窗口功能
【发布时间】:2019-02-16 11:58:05
【问题描述】:

如果我的索引中有文档历史记录,是否可以检索所有最新的文档? 假设我有产品记录,productid 属性为“myprod”的产品出现了 5 次,数据略有不同,每个都有时间戳。 当我使用日期进行搜索时,我希望所有产品记录在该日期有效,即日期小于搜索日期并且是该产品的最大值。 在 SQL 中很容易。在 Azure 搜索中可能吗?如果我们必须移动,甚至是弹性搜索?

谢谢

【问题讨论】:

    标签: elasticsearch azure-cognitive-search


    【解决方案1】:

    您当然可以在弹性搜索和天蓝色搜索中为此添加范围过滤器。

    我假设您的数据被格式化为日期,在弹性搜索中您所要做的就是

        "filter": {
          "range": {
            "<the date field name>": {
              "gte": "2018-01-01",
              "lte": "2018-01-01"
            }
          }
        } 
    

    在天蓝色搜索中

    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
    

    【讨论】:

      【解决方案2】:

      为了按照您的描述过滤记录,您需要做 3 件事:

      1. $按日期过滤(如 gd vigneshwar 已建议)
      2. $orderby 日期
      3. 仅选择排序列表中最先出现的不同产品 ID

      不幸的是 3. 必须发生在客户端/服务器端。

      【讨论】:

      • 谢谢,但不幸的是,这些都不是解决方案。日期标准不相关。这是每个产品的最新版本。那可能是昨天,也可能是五年前。然后在一个单独的函数中执行 3 会降低性能并消除所有分页优势。虽然我认为从技术上讲它是一种解决方案,但它并不是一个专门使用搜索引擎的想法。但是感谢您的想法
      • 当我说日期标准不相关时,我当然指的是 gte,在示例中似乎毫无意义,因为它与 lte 相同,基本上意味着 eq
      猜你喜欢
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2019-02-18
      相关资源
      最近更新 更多