Elasticsearch排序

问题描述 投票:0回答:2

我有一些桌子可以进行一些活动

[
{
  "id": 123,
  "name": "Ram",
  "status": 1,
  "activity": "Poster Design"
},
{
  "id": 123,
  "name": "Ram",
  "status": 1,
  "activity": "Poster Design"
},
{
  "id": 124,
  "name": "Leo",
  "categories": [
    "A",
    "B",
    "C"
  ],
  "status": 1,
  "activity": "Brochure"
},
{
  "id": 134,
  "name": "Levin",
  "categories": [
    "A",
    "B",
    "C"
  ],
  "status": 1,
  "activity": "3D Printing"
}

]

我希望通过对字段活动进行排序从弹性搜索5.5获取此数据,但我需要首先对应于name =“Ram”的所有数据,然后保留在单个查询中。

amazon-web-services sorting elasticsearch
2个回答
0
投票

您可以使用function score查询来根据过滤器的匹配来提升结果(这种情况是ram的名称)。

以下查询应该适合您

POST sort_index/_search
{
    "query": {
        "function_score": {
            "query": {
                "match_all": {}
            },
            "boost": "5",
            "functions": [{
                "filter": {
                    "match": {
                        "name": "ram"
                    }
                },
                "random_score": {},
                "weight": 1000
            }],
            "score_mode": "max"
        }
    },
    "sort": [{
        "activity.keyword": {
            "order": "desc"
        }
    }]
}

0
投票

我建议使用bool查询结合should子句。你还需要在你的领域使用sort条款。

© www.soinside.com 2019 - 2024. All rights reserved.