Elasticsearch:嵌套字段的多种排序

时间:2015-07-30 03:32:08

标签: sorting elasticsearch nested

有治疗有价格的情况,医院可能会或可能不想显示它。 所以有一个价格字段加上mode=select字段。 当未设置价格(价格为is_null)时,lp_low_priority的值为1(真)。

医院医生通过其嵌套治疗方法得以保存。 当用户搜索治疗时,他获得具有最低治疗价格的医院列表。 现在排序工作正常。 但我希望医院接受lp_low_priority的治疗。 要搜索的代码就像

lp_low_priority = 1

结果太奇怪了。 如果我只使用

{
      "sort": [
        {
          "treatments.lowest_price": {
            "nested_filter": {
              "term": {
                "treatments.treatment_slug": "heart-surgery"
              }
            },
            "mode": "avg",
            "order": "asc"
          }
        },
        {
          "treatments.lp_low_priority": {
            "order": "asc",
            "nested_filter": {
              "term": {
                "treatments.treatment_slug": "heart-surgery"
              }
            },
            "mode": "max"
          }
        }
      ],
      "query": {
        "filtered": {
          "filter": [
            {
              "term": {
                "treatments.treatment_slug": "heart-surgery"
              }
            },
            {
              "term": {
                "treatments.status": "active"
              }
            },
            {
              "term": {
                "treatments.treatment_status": "active"
              }
            },
            {
              "term": {
                "hospital_status": "active"
              }
            },
            {
              "terms": {
                "location.country": [
                  "India"
                ]
              }
            }
          ]
        }
      }
    }

排序是有序的,但是你看到{ "sort": [ { "treatments.lowest_price": { "nested_filter": { "term": { "treatments.treatment_slug": "heart-surgery" } }, "mode": "avg", "order": "asc" } } 按顺序排在第一位,这是好的(但不是要求)。 我甚至可以为嵌套字段使用多种排序。

0 个答案:

没有答案