是否可以根据字段是否满足条件对elasticsearch查询进行排序?

时间:2015-07-28 11:09:28

标签: elasticsearch

我已经获得了带有这样的映射的elasticsearch文档。

{
    "date_added": {
        "type": "date",
        "format": "dateOptionalTime"
    }
    "expires": {
        "type": "date",
        "format": "dateOptionalTime"
    }
}

我想要做的是使用双重排序查询:

1)最新到最旧(这很简单,没问题)

2)显示尚未到期的文件(因此文件中"到期"比现在更大)

在我的回复中,我希望将文档分为两部分 - 但最新到最旧到期,从最新到最旧到期。

我努力创造能够实现第二部分的排序。我可以按范围过滤器的结果进行排序吗?也许我可以创建一些类似属性的布尔字段,它将根据" expires"而改变。字段然后用它来排序?

1 个答案:

答案 0 :(得分:1)

这看起来像功能评分的一个很好的用例。您可以提及功能评分函数,以增加有效期限大于现在的文档的提升。

{
  "query": {
    "function_score": {
      "filter": [
        {
          "filter": {
            "range": {
              "expires": {
                "gte": "now"
              }
            }
          },
          "boost": 1000
        }
      ],
      "score_mode": "sum",
      "boost_mode": "sum"
    }
  }
}

您可以详细了解herehere