У меня есть сопоставление:
"ntol-2020-05" : {
"mappings" : {
{
"properties": {
"_createdAt": {
"type": "date"
},
"_logType": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"device": {
"properties": {
...
}
},
"resp": {
"type": "nested",
"properties": {
"data": {
"type": "nested",
"properties": {
...
}
}
}
}
}
}
}
}
}
Я фильтрую с тремя условиями:
- "_ logType" is "crawler ".
- " _ createdAt "на" 2020-05-23 ".
- Размер" resp "= 0.
Я пытаюсь выполнить фильтрацию с помощью запроса :
{"query": {"bool": {"must": [{"term": {"_ logType": {"value": "crawler"}}}, {"range": {"_createdAt": {"gte": "2020-05-23", "lte": "2020-05-23", "time_zone": "+ 07:00"}}}, {"nested": { "path": "resp", "query": {"script": {"script": {"source": "doc ['resp']. size ()> 0"}}}}}]}}, "from": 0, "size": 10}
Возвращает ошибку:
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:94)",
"org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:41)",
"doc['resp'].size() > 0",
" ^---- HERE"
],
"script": "doc['resp'].size() > 0",
"lang": "painless",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "No field found for [resp] in mapping with types []"
}
}
Если я использую скрипт "doc.containsKey('resp') && doc['resp'].size() > 0"
, то он вернет хиты length = 0.
Помогите мне. Спасибо!