假设我具有以下类型:
{
"2019-11-04": {
"mappings": {
"_doc": {
"properties": {
"labels": {
"type": "nested","properties": {
"confidence": {
"type": "float"
},"created_at": {
"type": "date","format": "strict_date_optional_time||date_time||epoch_millis"
},"label": {
"type": "keyword"
},"updated_at": {
"type": "date","value": {
"type": "keyword","fields": {
"numeric": {
"type": "float","ignore_malformed": true
}
}
}
}
},"params": {
"type": "object"
},"type": {
"type": "keyword"
}
}
}
}
}
}
我想按labels
数组的大小/长度进行过滤。我已经尝试了以下(as the official docs suggest):
{
"query": {
"bool": {
"filter": {
"script": {
"script": {
"source": "doc['labels'].size > 10"
}
}
}
}
}
}
但我不断得到:
{
"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['labels'].size > 10"," ^---- HERE"
],"script": "doc['labels'].size > 10","lang": "painless"
}
],"type": "search_phase_execution_exception","reason": "all shards failed","phase": "query","grouped": true,"failed_shards": [
{
"shard": 0,"index": "2019-11-04","node": "kk5MNRPoR4SYeQpLk2By3A","reason": {
"type": "script_exception","script_stack": [
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:81)"," ^---- HERE"
],"lang": "painless","caused_by": {
"type": "illegal_argument_exception","reason": "No field found for [labels] in mapping with types []"
}
}
}
]
},"status": 500
}