首页 > 解决方案 > 弹性搜索 - 在相同条件下返回 3 个活动项目和 7 个非活动项目

问题描述

以下是我用来根据我的位置和类别过滤结果的查询。

GET /myteam-dev/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "mapDetails.addressComponents.country",
            "query": {
              "term": {
                "mapDetails.addressComponents.country.shortName": {
                  "value": "IN"
                }
              }
            }
          }
        },
        {
          "query_string": {
            "query": "*",
            "fields": [
              "name^10",
              "shortDescription^9",
              "attributes.attributeName^8",
              "attributes.value^7",
              "slug^6"
            ]
          }
        }
      ],
      "filter": [
        {
          "terms": {
            "category.catId": [
              "609e1a546b66fe030d94f402"
            ]
          }
        },
        {
          "range": {
            "price": {
              "gte": 0,
              "lte": 2000000
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "createdAt": {
        "order": "desc"
      }
    }
  ]
}

以上返回我正确的结果。现在在我的每个项目中都有一个标签“活动”:true。我想修改上面的查询,使过滤结果应该有 3 个处于活动状态,然后剩下的 7 个处于非活动状态,这可能吗?

标签: elasticsearchelasticsearch-5

解决方案


推荐阅读