我有ElasticSearch
5,我想根据字段值进行排序。想象一下,具有类别(例如流派)的文档可能具有科幻,戏剧,喜剧等值,并且在进行搜索时,我想对值进行排序,以便首先出现喜剧,然后是科幻和戏剧。然后,我当然会按照其他条件在小组内订购。有人可以指出我该怎么做吗?
在elasticsearch
可以根据字段的特定值分配顺序的情况下,这是可能的。
我已经使用基于脚本的排序实现了您要查找的内容,该排序利用了无痛脚本。您可以参考我提到的链接,以了解更多有关以下查询的内容,这些内容足以满足您的需求。
还假设您在以下映射中具有genre
and movie
as关键字。
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
针对每种类型进一步排序。
希望能帮助到你。
两个实体:收集和产品。集合是Product的父级。 我需要通过产品的条款搜索,并显示每4个产品的集合。 藏品和产品可以部分匹配,但先要最好的匹配。如果匹配未满,则某些项具有优先权。 示例:搜索“color:red”和“Material:stone”需要首先显示红色石头,然后显示任何其他红色(这是关于收藏匹配和产品匹配)。 因此,所有这些都通过以下请求得到解决: 好了,现在麻烦来了。 需要按价格排序
问题内容: 这是场景: 想象一下,注册用户使用创建了一个新实体,而其他注册用户创建了一个新实体,依此类推… 我想要做的是根据记录价格对记录进行排序,具体取决于前端用户选择的货币(欧元或美元)。 我无法编制索引,例如或,因为费率每小时都会变化,但是如果可能的话,更新10000条记录价格的最佳方法是什么? 1-以下是我的建议,它可行,但是我认为这可能是更好的方法,有什么建议吗? 2-如果没有,哪种性能
问题内容: 我正在通过NEST c#使用ElasticSearch。我有很多关于人的信息 我希望能够按lastName以及长度的顺序对项目列表进行过滤和排序,因此名称中只有5个字符的人会出现在结果集的开头,然后是10个字符的人。 所以我想用一些伪代码做类似的事情 我是ElasticSearch的新手,所以任何示例都将非常有帮助。 问题答案: 您可以使用基于脚本的排序进行排序。 作为一个玩具示例,我
问题内容: 我的方法有问题。例如,我有带有Text()的索引字段: 当我尝试执行带有排序的搜索查询时,出现错误: elasticsearch.exceptions.RequestError:TransportError(400,’search_phase_execution_exception’,’默认情况下,文本字段上的字段数据是禁用的。在[title]上设置fielddata = true以便
我想按字段存在对我的ES搜索结果进行排序,假设我得到了字段“价格”,并希望所有有价格的结果都在顶部,所有没有价格的结果都在底部。我知道你可以做一个简单的排序并添加“缺失”:“_last”,例如: {“sort”:[{price':{missing':'u last',order':'asc'}}]} 但在这种情况下,结果也将按价格排序,我不想要它。 没有脚本有办法做到吗?
问题内容: 如何按名称->值对json文件排序?我想按标签名称的asc值显示。任何想法如何转换我的json文件? 这是我的JSON文件的外观: 如果有人帮助我,我将不胜感激。提前致谢。 问题答案: 我建议使用