ElasticSearch按值排序

我有ElasticSearch

5,我想根据字段值进行排序。想象一下,具有类别(例如流派)的文档可能具有科幻,戏剧,喜剧等值,并且在进行搜索时,我想对值进行排序,以便首先出现喜剧,然后是科幻和戏剧。然后,我当然会按照其他条件在小组内订购。有人可以指出我该怎么做吗?

回答:

回答:

elasticsearch可以根据字段的特定值分配顺序的情况下,这是可能的。

我已经使用基于脚本的排序实现了您要查找的内容,该排序利用了无痛脚本。您可以参考我提到的链接,以了解更多有关以下查询的内容,这些内容足以满足您的需求。

还假设您在以下映射中具有genreand movieas关键字。

PUT sampleindex

{

"mappings": {

"_doc": {

"properties": {

"genre": {

"type": "text",

"fields": {

"raw": {

"type": "keyword"

}

}

},

"movie": {

"type": "text",

"fields": {

"raw": {

"type": "keyword"

}

}

}

}

}

}

}

您可以利用下面的查询来获得您想要的东西

GET sampleindex/_search

{

"query": {

"match_all": {}

},

"sort": [{

"_script": {

"type": "number",

"script": {

"lang": "painless",

"inline": "if(params.scores.containsKey(doc['genre.raw'].value)) { return params.scores[doc['genre.raw'].value];} return 100000;",

"params": {

"scores": {

"comedy": 0,

"sci-fi": 1,

"drama": 2

}

}

},

"order": "asc"

}

},

{ "movie.raw": { "order": "asc"}

}]

}

请注意,我已经为genre和同时包含了sort movie。基本上会发生排序,genre然后发布,然后movie针对每种类型进一步排序。

希望能帮助到你。

以上是 ElasticSearch按值排序 的全部内容, 来源链接: utcz.com/qa/413906.html

回到顶部