Elasticsearch - 按嵌套多字段排序

时间:2014-04-23 21:57:23

标签: elasticsearch

我在尝试对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中。我很乐意也采取其他解决方案,但我不想在两个不同的名字下打两次。

1 个答案:

答案 0 :(得分:1)

您需要一个路径来对嵌套文档类型进行排序。 http://sense.qbox.io/gist/0d05fcf12be64e4a924a6b010ffe55e72d91b147