概述:elasticsearch 后面新增一个字段,比如:is_robot是否爬虫(0-否、1-是) long。
一、老数据查询无法显示
老索引数据没有该字段,新增索引会有该字段;配置图表中该字段作为变量查询条件,默认配置查询条件,is_robot: $IsRobot。
默认全部
=ALL,只能显示索引有该字段的
=否,只能显示索引有该字段的,值=0
=是,只能显示索引有该字段的,值=1
原因分析:选择All走的OR语法
二、兼容老数据保证可显示
使用_exists_判断字段是否存在,
query:
((NOT _exists_: is_robot) || (_exists_: is_robot && is_robot: $IsRobot))
或者
((NOT _exists_: is_robot) OR (_exists_: is_robot AND is_robot: $IsRobot))
=ALL,显示索引有该字段的、索引无该字段的
=否,显示索引有该字段的 值=0、索引无该字段的
=是,与=ALL,数据一致;不符合预期。
三、总结
虽然选择“是”数据不符合预期,但是“All”、“否”可以用。只有通过 新增字段后新数据创建时间,分辨数据了。
query语法,$IsRobot不支持判选择 “All”、“否”判断,如果支持就完美了,如:
(($IsRobot: (All OR 0) && NOT _exists_: is_robot) || (_exists_: is_robot && is_robot: $IsRobot))