我在尝试对Elasticsearch中的嵌套多字段属性进行排序时遇到了问题。两个多字段中的一个工作,另一个为每个值返回null。
我的可分类分析仪:
"analyzer": {
"sortable": {
"type": "custom",
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
映射:
{
"doc": {
"properties": {
"id" : {
"type": "long"
},
"name": {
"type": "string",
"index": "analyzed",
"analyzer": "snowball",
"fields": {
"sortable": {
"type": "string",
"analyzer": "sortable"
}
}
},
"website": {
"type": "nested",
"properties": {
"domain": {
"type": "string",
"analyzer": "snowball",
"fields": {
"sortable": {
"type": "string",
"analyzer": "sortable"
}
}
},
"created": {
"type": "date"
}
}
}
}
}
}
一个完整的工作示例是here。请注意底部的四个搜索。按名称或name.sortable排序都会在结果的排序部分显示值。按website.domain排序会在排序部分显示一个值,但website.domain.sortable始终显示为null。
我希望我在这里做些傻事,但对于我的生活,我无法看到什么。这是在Elasticsearch 1.1.0中。我很乐意也采取其他解决方案,但我不想在两个不同的名字下打两次。
答案 0 :(得分:1)
您需要一个路径来对嵌套文档类型进行排序。 http://sense.qbox.io/gist/0d05fcf12be64e4a924a6b010ffe55e72d91b147