【问题标题】:ElasticSearch Nested Range FilterElasticSearch 嵌套范围过滤器
【发布时间】:2013-07-03 15:17:37
【问题描述】:

我正在尝试构建 ElasticSearch 查询,但没有得到我期望的结果。任何帮助将不胜感激!

映射细节:

我已将代表志愿者机会的文档编入索引。每个机会中都有以下字段:

  1. opp 的标题,
  2. 总结,
  3. 批准状态,以及
  4. 隐私设置。

此外,每个机会文档都有:

  1. 一个嵌套的非营利性文档,代表志愿者机会的非营利性主办方,
  2. 一个或多个嵌套的原因文档,代表机会解决的原因,
  3. 零个或多个嵌套技能文档,代表志愿者所需的技能,以及
  4. 零个或多个嵌套轮班文档,表示志愿者可以注册的时间段。

目前,每个嵌套的轮班文档都包含一个嵌套的 calendarBlock 文档,其中包含开始和结束日期时间字段,以及一个用于注册该轮班的最大志愿者人数的字段。

查询

我尝试构建的查询是过滤查询。查询字符串是从 Web 上的表单传入的。然后,我需要以编程方式将至少三个过滤器附加到此查询:

  1. 条款过滤器仅返回“已批准”的机会:“y”
  2. 一个条款过滤器,只返回“私人”的机会:“n”
  3. 一个范围过滤器,仅返回至少有一个班次且日历块结束字段大于当前日期/时间的机会。 (即:过滤掉所有过去的班次。)

前两个过滤器工作正常。第三个是我卡住的地方。我认为这个问题可能与复杂的嵌套结构有关。我尝试了一个嵌套过滤器,但我不确定我是否正确地这样做了。此外,日期字段实际上嵌套了两层。当我尝试查询时,我仍然会得到过去班次的结果。

在没有安排未来轮班的情况下过滤掉所有机会的正确方法是什么?

【问题讨论】:

  • 预期的点击率是多少?您实际获得了什么?另外几个链接将非常容易可视化。 :)
  • 你能发布你的映射吗?此外,当您只有一个对象(例如您的非营利领域)时,也不需要 type: nested。仅当您想要对子文档列表执行查询时,您才使用嵌套文档,当查询的所有部分在一个子文档中匹配时,您希望在其中命中
  • pastle 链接不再有效。

标签: elasticsearch elastica


【解决方案1】:

我的问题与我格式化日期时间的方式有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多