elasticsearch,Indexing,elasticsearch" /> elasticsearch,Indexing,elasticsearch" />

Indexing 基于数组类型字段大小的排序搜索

Indexing 基于数组类型字段大小的排序搜索,indexing,elasticsearch,Indexing,elasticsearch,我有一个ElasticSearch集群,我必须根据对象数组字段“contents”的大小执行排序查询 到目前为止我已经试过了 { "size": 10, "from": 0, "fields" : ['name'], "query": { "match_all": {} }, "sort" : { "script" : { "script" : "doc['contents'].values.len

我有一个ElasticSearch集群,我必须根据对象数组字段“contents”的大小执行排序查询

到目前为止我已经试过了

{
    "size": 10,
    "from": 0,
    "fields" : ['name'],
    "query": {
        "match_all": {} 
    },
    "sort" : {
        "script" : {
        "script" : "doc['contents'].values.length",
        "order": "desc"
        }
    }
}
上面的查询为我提供了SearchPhaseExecutionException。ES查询是从客户端使用elasticsearch.angular.js进行的


任何帮助都将不胜感激。

版本1.2.x中脚本的安全性已更改。在
ES_HOME/config/scripts
中创建一个名为
script_score.mvel的文件,并添加脚本:

doc.containsKey('content') == false ? 0 : doc['content'].values.size() 
重新启动Elasticsearch并将查询更改为:

{
    "size": 10,
    "from": 0,
    "query": {
        "match_all": {}
    },
    "sort": {
        "_script": {
            "script": "script_score",
            "order": "desc",
            "type" : "string"
        }
    }
}
有关更多信息,请查看此处:


更改后获得相同的异常SearchPhaseExecutionException您使用的ElasticSearch版本是什么?尝试了编辑,我发现以下错误在[clustername]类型的映射中找不到[Content]字段您可以发布映射吗?我的集群映射具有我已检查的属性