elasticsearch - 在弹性查询中访问数组
问题描述
我有包含数组的文档 - 有时有重复
{
"_index" : "indexx_v1-2020.11",
"_type" : "x-logs",
"_id" : "wZ_p_XUBV4a6COay8wWzJ",
"_score" : 10.089222,
"_source" : {
"actiontype" : "doit",
"geoip" : {
// geographic data
},
"data" : {
"field" : [
"foo",
"bar",
"foo",
"bar"
],
},
"@version" : "1",
"header" : {
"product" : "our_product",
"processGUID" : "6528",
}
}
},
{
"_index" : "indexx_v1-2020.11",
"_type" : "x-logs",
"_id" : "xJq-_XVWV3f6COaXnRqx",
"_score" : 9.089443,
"_source" : {
"actiontype" : "doit",
"geoip" : {
// geographic data
},
"data" : {
"field" : [
"foo",
"bar"
],
},
"@version" : "1",
"header" : {
"product" : "our_product",
"processGUID" : "3456",
}
}
},
如果我使用带有doc语法重复的无痛脚本访问这些字段:
所以
doc['data.field'].length
两个文档都返回 2。
这使我无法使用脚本进行过滤,因为此表达式永远不会为真
"script": {
"script" : {
"inline": """
return doc['data.field'].length > 2 &&
doc['data.field'][2] == 'foo' &&
doc['data.field'][3] == 'bar';
}
}
任何提示 newbee 过滤这些不同的文档或构建聚合以将这些计算为变体
foo/bar : 1 document
foo/bar/foo/bar : 1 document
谢谢
解决方案
推荐阅读
- vba - 将 2 个范围变量传递给 Sub - Object required/ByRef 参数类型不匹配错误
- python - 如何让 Celery worker 消耗单个任务并退出
- python - 将数字转换为百分比后排序返回不正确的结果
- python - 如何从网站获取一些属性以进行抓取
- sql - 确定列是增加还是减少
- reactjs - 提交表单时,React 应用程序无法按预期工作
- android - 运行模拟器时Android Studio不会显示图像不断抛出错误
- python - TSP [最近邻] - 给定距离矩阵
- amazon-web-services - 模式匹配供应商文件夹的代码部署 appspec.yml 权限规范
- firebase-authentication - CouchDB 用来加密密码的“简单”散列算法是什么?