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
zombodb query dsl的更多相关文章
- Query DSL for elasticsearch Query
Query DSL Query DSL (资料来自: http://www.elasticsearch.cn/guide/reference/query-dsl/) http://elasticsea ...
- Elasticsearch(入门篇)——Query DSL与查询行为
ES提供了丰富多彩的查询接口,可以满足各种各样的查询要求.更多内容请参考:ELK修炼之道 Query DSL结构化查询 Query DSL是一个Java开源框架用于构建类型安全的SQL查询语句.采用A ...
- ElasticSearch的 Query DSL 和 Filter DSL
Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. Query DSL 与 Filter DSL DSL查询语言中存在两种:查询DSL(q ...
- Query DSL(1)
https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl.html Query DSL GET _search { & ...
- Elasticsearch Query DSL
Elasticsearch Query DSL By:授客 QQ:1033553122 1. match_all 1 2. match 2 3. match_phrase 5 4. match_phr ...
- Elasticsearch学习笔记(二)Search API 与 Query DSL
一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以 ...
- Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文 ...
- Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
目录 引言 构建示例 match operator 参数 analyzer lenient 参数 Fuzziness fuzzniess 参数 什么是模糊搜索? Levenshtein Edit Di ...
- Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
目录 引言 概要 Query and filter context Match All Query 全文查询 Full text queries 小结 参考文档 引言 虽然之前做过 elasticse ...
随机推荐
- 使用Jekins自动构建项目(GitLab+Java Maven)
1. 登录Jekins 前提: Jekins 已经部署完成并能登录版本:Jenkins2.60.2 http://IP:端口/jenkins/view/all/newJob 2. 新建构建任务 选择项 ...
- 以太坊钱包开发系列2 - 账号Keystore文件导入导出
以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...
- UEBA 学术界研究现状——用户行为异常检测思路:序列挖掘prefixspan,HMM,LSTM/CNN,SVM异常检测,聚类CURE算法
论文 技术分析<关于网络分层信息泄漏点快速检测仿真> "1.基于动态阈值的泄露点快速检测方法,采样Mallat算法对网络分层信息的离散采样数据进行离散小波变换;利用滑动窗口对该尺 ...
- FFT与一些冷门问题
FFT也能用于一些特殊的字符串匹配与最小化问题. Prob 1 : 给出模式串A与文本串B,两个串中只有26个大写字母与通配符'?'(即可以任意匹配一个字符),求A在B中的匹配数.要求以FFT为例给出 ...
- Forth相关IO操作
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- 四:(之七_如何与运行中容器交互)Dockerfile语法梳理和实践
1.指定网络连接方式:--net=”” (bridge/host/none/container: 四种类型) 注:192.168.33.18 此IP是在vagrantfile中指定的虚拟机IP:c ...
- 移动应用调试之Inspect远程调试
移动应用调试之Inspect远程调试 一.准备工作 chrome浏览器,建议最新版本 如果你点击inspect打开的DevTools窗口一片空白,且刷新无效时,那极有可能是由于被墙的缘故. 二.Ins ...
- 大数据面试题——如何从大量的url中找出相同的url
题目描述: 给定a.b两个文件,各存放50亿个url,每个url各占64B,内存限制是4GB,请找出a.b两个文件共同的url 分析: 由于每个url需要占64B,所以50亿个url占用空间大小为50 ...
- windows Jenkins git 配置
待更新 插件下载地址:http://updates.jenkins-ci.org/download/plugins/ 参考地址:https://blog.csdn.net/zzy1078689276/ ...
- Layer For Mobile 弹窗 input输入文字后,点击取消确定按钮失效(需点击两次)
webapp中使用Layer For Mobile弹出弹窗,修改昵称输入文字后,ios手机中,如果不先点击收起键盘,两个按钮点击之后无效... 两个按钮的方法是写在这里的——> 最后只能吧点击按 ...