Имея некоторые данные в моем ES (6.4), например:
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "tracking",
"_type": "activity",
"_id": "u9hzd2YB_M8C5mR3Zhkn",
"_score": 1,
"_source": {
"locationid": "test1",
"quality": [
{
"dataTimeBegin": "2018-08-13 00:00",
"dataTimeEnd": "2018-08-13 00:00",
"contacts": 0
},
{
"dataTimeBegin": "2018-08-13 00:01",
"dataTimeEnd": "2018-08-13 00:01",
"contacts": 5
},
...
Мой вопрос сейчас: как выполнить запрос по вложенному массиву?У меня есть сопоставление:
"mappings": {
"activity": {
"properties": {
"quality": {
"type": "nested",
"properties": {
"dataTimeBegin": {
"type": "date",
"format": "yyyy-MM-dd HH:mm"
},
"dataTimeEnd": {
"type": "date",
"format": "yyyy-MM-dd HH:mm"
}
}
}
}
}
И попробуйте выполнить запрос следующим образом:
"query": {
"bool": {
"must": [
{
"match": {
"locationid": "test1"
}
},
{
"nested": {
"path": "quality",
"query": {
"bool": {
"must": [
{
"range": {
"quality.dataTimeBegin": {
"from": "2018-08-13 00:00",
"to": "2018-08-13 00:00",
"include_lower": true,
"include_upper": true
}
}
}
]
}
}
}
]
}
}
Это должно дать мне ровно одну запись, но я получаю все документы.Я попробовал это также с вложенным отображением и без.Что я могу сделать, где ошибка?