是否存在可将JSON Logic转换为Elasticsearch Query DSL的工具
JSON Logic转Elasticsearch Query DSL工具相关说明
目前已有可直接复用的开源实现,也可根据自身业务场景快速开发适配,具体信息如下:
- 开源类库实现
JavaScript、Python生态均有现成的封装工具,支持绝大多数通用JSON Logic操作符到ES Query DSL的自动转换:- 基础操作符(等于、不等于、大于、小于、逻辑与/或/非、数组包含等)可直接映射为ES对应的
term、range、bool等查询结构 - 支持自定义扩展操作符映射规则,遇到特殊业务自定义的JSON Logic操作符时,可自行补充对应的转换逻辑
- 基础操作符(等于、不等于、大于、小于、逻辑与/或/非、数组包含等)可直接映射为ES对应的
- 适配注意事项
- 转换前需要确认JSON Logic中的逻辑是否都能被ES原生Query DSL支持,部分复杂计算类的自定义逻辑无法直接转换,需要配合ES的
script查询实现 - 涉及嵌套字段、数组字段的规则转换时,需要和ES的索引字段映射结构对齐,避免查询路径错误导致结果不符合预期
- 转换前需要确认JSON Logic中的逻辑是否都能被ES原生Query DSL支持,部分复杂计算类的自定义逻辑无法直接转换,需要配合ES的
- 自定义开发参考
如果现有工具不能完全匹配你的业务场景,也可以自行开发转换能力,核心逻辑就是建立JSON Logic操作符到ES查询类型的映射规则,递归解析JSON Logic的嵌套结构生成对应DSL即可,基础版本的开发量通常不大。
内容的提问来源于stack exchange,提问作者Tony Mauro
相关产品推荐
相关产品推荐

