Indexing 基于数组类型字段大小的排序搜索
我有一个ElasticSearch集群,我必须根据对象数组字段“contents”的大小执行排序查询 到目前为止我已经试过了Indexing 基于数组类型字段大小的排序搜索,indexing,elasticsearch,Indexing,elasticsearch,我有一个ElasticSearch集群,我必须根据对象数组字段“contents”的大小执行排序查询 到目前为止我已经试过了 { "size": 10, "from": 0, "fields" : ['name'], "query": { "match_all": {} }, "sort" : { "script" : { "script" : "doc['contents'].values.len
{
"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]字段您可以发布映射吗?我的集群映射具有我已检查的属性