我在elasticsearch中有以下类型
"hotel" : {
"magicScore" : 1
"rooms" : [
{
"type" : "single",
"magicScore" : 1
},
{
"type" : "double",
"magicScore" : 2
}
]
}
Run Code Online (Sandbox Code Playgroud)
其中 rooms 是嵌套类型。例如,我想使用脚本排序进行排序
"sort" : [ {
"_script" : {
"script" : "return doc['magicScore'].value + doc['rooms.magicScore'].value",
"params" : ,
"type" : "number",
"reverse" : true
}
} ]
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为房间是嵌套对象,有办法解决这个问题吗?
Elasticsearch 允许基于脚本的排序和嵌套对象内的排序,而且您可以将这两种方法混合在一起。你可以尝试这样的事情:
"sort" : [ {
"_script" : {
"nested": {
"path": "rooms"
},
"script" : "return doc['magicScore'].value + doc['rooms.magicScore'].value",
"params" : ,
"type" : "number",
"reverse" : true
}}]
Run Code Online (Sandbox Code Playgroud)
一旦nested path指定,elasticsearch 将查找引用的嵌套文档的术语(如果这些文档已建立索引),因此可以通过映射引用它们doc。这将避免加载整个_source.
| 归档时间: |
|
| 查看次数: |
8455 次 |
| 最近记录: |