elasticsearch - 按字段对结果进行分组并对其进行排序
问题描述
我有一个带有映射的示例索引:
released_at: {
type: "date",
},
name: {
type: "text",
analyzer: "analyzer_startswith",
},
和自定义分析器analyzer_startwith
:
analyzer_startswith: {
tokenizer: "keyword",
filter: "lowercase",
},
通过它我可以搜索name
以短语开头的所有文档:
{
"query": {
"match_phrase_prefix": {
"name": "for"
}
}
}
样本结果(字段name
):
[
"Force of Vigor",
"Former",
"Forest",
"Force of Rage",
"Forest",
]
现在,我需要对重复项进行“分组”并按released_at
但不改变结果顺序对其进行排序,即所有Forest
文档都应在列表的第一个位置(之后Former
)进行分组和排序。
因此,如果我们有结构的结果:
[
{
"name": "Force of vigor",
"released_at": "2020-12-03"
},
{
"name": "Former",
"released_at": "2004-06-03"
},
{
"name": "Forest",
"released_at": "2021-04-25"
},
{
"name": "Force of Rage",
"released_at": "2020-12-03"
},
{
"name": "Forest",
"released_at": "2021-01-01"
}
]
它应该是:
[
{
"name": "Force of vigor",
"released_at": "2020-12-03"
},
{
"name": "Former",
"released_at": "2004-06-03"
},
{
"name": "Forest",
"released_at": "2021-01-01"
},
{
"name": "Forest",
"released_at": "2021-04-25"
},
{
"name": "Force of Rage",
"released_at": "2020-12-03"
}
]
因此,第一次出现的原始位置没有改变,但记录已经排序。
任何想法如何做到这一点?对不起,但我不知道从哪里开始:/
解决方案
推荐阅读
- c# - 在 Update 或 FixedUpdate 中移动带有刚体组件的对象是否重要?
- android - 如何在 RecyclerView 中显示此列表
- python - 正则表达式打印行并计算单词
- python - Kivy:无法获取 kivy 参数:MDDataTable 中的 add_row 工作
- python - CatBoostRegressor 树中叶值的比例是多少?
- c# - 启动 Visual Studio 2019 时 X 包未正确加载
- machine-learning - 为什么谷歌语音到文本 api 提供如此糟糕的分类?
- windows - 使用 netsh 命令连接到隐藏的 WiFi
- powershell - Azure Pipelines - 需要等效的 Az DevOps 命令
- java - 为什么我在创建列表时会收到错误消息?