0
试图执行ES查询时,我试图对数组中的对象进行嵌套过滤时遇到了问题。检查字段是否存在于elasticsearch嵌套聚合下
"_index": "events_2015-07-08",
"_type": "my_type",
"_source":{
...
...
"custom_data":{
"className:"....."
}
}
到:
"_index": "events_2015-07-08",
"_type": "my_type",
"_source":{
...
...
"custom_data":[ //THIS CHANGED FROM AN OBJECT TO AN ARRAY OF OBJECTS
{
"key":".....",
"val":"....."
},
{
"key":".....",
"val":"....."
}
]
}
此嵌套过滤器的工作原理上有新的数据结构指标优良:我们的数据的结构已被更改
{
"nested": {
"path": "custom_data",
"filter": {
"bool": {
"must": [
{
"term":
{
"custom_data.key": "className"
}
},
{
"term": {
"custom_data.val": "SOME_VALUE"
}
}
]
}
},
"_cache": true
}
}
然而,它失败当浏览具有较旧数据结构的索引时,将无法添加该功能。理想情况下,我可以找到两个数据结构,但在这一点上,我会解决“优雅的失败”,即只是不返回结构旧的结果。
我曾尝试在字段“custom_data.key”和“不存在”字段“custom_data.className”中添加“存在”过滤器,但我不断收到“SearchParseException [[events_2015- 07-01] [0]:从[-1],大小[-1]:解析失败[解析失败源”