我尝试使用脚本在嵌套模型上进行聚合,但它失败了。
我做错了什么?
我的查询
GET myindex/mymodel/_search
{
"query": {
"multi_match": {
"query": "Some Name",
"fields": ["name^9", "description^6", "categories.name"],
"operator": "and"
}
},
"aggs": {
"categories_aggregation": {
"nested": {
"path": "categories"},
"aggs": {
"id_and_name": {
"terms": {
"script": {
"source": "doc['categories.slug'].value + '|' + doc['categories.name'].value"
}
}
}
}
}
}
}
我的一个条目:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 648,
"max_score": 1,
"hits": [
{
"_index": "myindex",
"_type": "mymodel",
"_id": "5a62180c9d1fa22ba988a799",
"_score": 1,
"_source": {
"name": "Some Name",
"categories": [
{
"_id": {
"$oid": "5a50eac49d1fa22c095fb070"
},
"name": "Category Name",
"slug": "category-name"
}
]
}
}
]
}
}
错误:
{
"error": {
"root_cause": [
{
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:81)",
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:39)",
"doc['categories.name'].value",
" ^---- HERE"
],
"script": "doc['categories.name'].value",
"lang": "painless"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "myindex",
"node": "lZ0pbatxQmmL5ZvJ5UMCwQ",
"reason": {
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:81)",
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:39)",
"doc['categories.name'].value",
" ^---- HERE"
],
"script": "doc['categories.slug'].value + '|' + doc['categories.name'].value",
"lang": "painless",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "No field found for [categories.name] in mapping with types [mymodel]"
}
}
}
]
},
"status": 500
}
编辑:
我的映射:
{
"myindex": {
"mappings": {
"mymodel": {
"properties": {
"categories": {
"type": "nested",
"properties": {
"_id": {
"properties": {
"$oid": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"id": {
"type": "text"
},
"name": {
"type": "text"
},
"slug": {
"type": "text"
},
"slugs": {
"type": "text"
}
}
},
"name": {
"type": "text",
"analyzer": "english"
},
}
}
}
}
}