【问题标题】:Elasticsearch - Sorting by a nested multi-fieldElasticsearch - 按嵌套多字段排序
【发布时间】:2014-04-23 21:57:22
【问题描述】:

我在尝试对 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 排序会在 sort 部分显示一个值,但 website.domain.sortable 总是显示 null。

我希望我只是在这里做一些愚蠢的事情,但对于我的生活,我看不到什么。这是在 Elasticsearch 1.1.0 中。我也很乐意采用其他解决方案,尽管我讨厌用两个不同的名字在该领域打两次。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

    【讨论】:

    • 这真的适用吗?我将“字段”添加到嵌套类型下的字符串类型,而不是嵌套类型本身。搜索确实适用于这两个领域。如果我将搜索词更改为“mydomain-com”,则雪球分析字段(website.domain)匹配“mydomain”或“com”,而可排序字段(website.domain.sortable)仅匹配全文“ mydomain-com”。 sense.qbox.io/gist/cc801f831b45075463ee160146aea279419d0505 的新示例我很乐意使用 sense.qbox.io,让事情变得更容易。
    • 你说得对,我在做一个没有嵌套的存在过滤器,所以我得出了错误的结论。我现在正在调查它。很奇怪
    • 这绝对有效,不知道我是怎么错过我发誓的详细阅读文档的细节。非常感谢。
    • 发生在我们最好的人身上,再次感谢您使用我们的感觉。
    • 可以更新代码吗?我在 qbox 上看不到你的要点。谢谢
    猜你喜欢
    • 2019-10-25
    • 2021-08-07
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多