zombodb  query dsl

zombodb query dsl 是为了简化es 查询的处理,同时可以兼容基本上所有的es 操作
一个简单的查询,查询任何字段包含cats 以及dogs 的

SELECT * FROM table WHERE table ==> <cats and dogs query here>

zombodb 会将这个sql 查询处理,转化为 zdbquery ,实际上我们可以通过查询分析也看出来

zombodb 查询语法

支持类似google 搜索的模式,实现是基于es 的查询语法

  • 一个简单查询
SELECT * FROM table WHERE table ==> '+cats +dogs';
SELECT * FROM table WHERE table ==> 'cats AND dogs';

实际的处理

SELECT '+cats +dogs'::zdbquery::json;
                   json                   
------------------------------------------
 {"query_string":{"query":"+cats +dogs"}}

SELECT 'cats AND dogs'::zdbquery::json;
                    json                    
--------------------------------------------
 {"query_string":{"query":"cats AND dogs"}}
  • 直接json 格式的查询
SELECT * FROM table WHERE table ==> '{"bool":{"must":[{"term":{"zdb_all":{"value":"cats"}}},{"term":{"zdb_all":{"value":"dogs"}}}]}}';
  • sql builder api
    使用zombodb 封装好的dsl 方式,包含了基本上所有的查询处理
SELECT * FROM table WHERE table ==> dsl.and('cats', 'dogs');
SELECT * FROM table WHERE table ==> dsl.and(dsl.term('zdb_all', 'cats'), dsl.term('zdb_all', 'dogs'));

实际上json查询

SELECT dsl.and('cats', 'dogs')::json;
                                          must                                           
-----------------------------------------------------------------------------------------
 {"bool":{"must":[{"query_string":{"query":"cats"}},{"query_string":{"query":"dogs"}}]}}

SELECT dsl.and(dsl.term('zdb_all', 'cats'), dsl.term('zdb_all', 'dogs'))::json;
                                              must                                               
-------------------------------------------------------------------------------------------------
 {"bool":{"must":[{"term":{"zdb_all":{"value":"cats"}}},{"term":{"zdb_all":{"value":"dogs"}}}]}}

排序&&限制查询结果

  • 格式参考
SELECT * FROM table WHERE table ==> dsl.limit(10, dsl.term('title', 'cat'));
SELECT * FROM table WHERE table ==> dsl.sort('id', 'asc', dsl.limit(10, dsl.term('title', 'cat')));
  • 说明
    zombodb 的dsl 包含了基本上所有的排序以及显示查询条目的处理,比如dsl.limit ,``dsl.offset,dsl.sort`...

说明

更多的函数建议可以结合es 的查询语法以及官方文档

参考资料

https://github.com/zombodb/zombodb/blob/master/QUERY-DSL.md

posted on   荣锋亮  阅读(430)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-04-03 java 短链接生成
2017-04-03 openresty websocket 使用
2014-04-03 sql server 数字字符串的排序

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示