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的更多相关文章

  1. Query DSL for elasticsearch Query

    Query DSL Query DSL (资料来自: http://www.elasticsearch.cn/guide/reference/query-dsl/) http://elasticsea ...

  2. Elasticsearch(入门篇)——Query DSL与查询行为

    ES提供了丰富多彩的查询接口,可以满足各种各样的查询要求.更多内容请参考:ELK修炼之道 Query DSL结构化查询 Query DSL是一个Java开源框架用于构建类型安全的SQL查询语句.采用A ...

  3. ElasticSearch的 Query DSL 和 Filter DSL

    Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. Query DSL 与 Filter DSL DSL查询语言中存在两种:查询DSL(q ...

  4. Query DSL(1)

    https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl.html Query DSL GET _search { & ...

  5. Elasticsearch Query DSL

    Elasticsearch Query DSL By:授客 QQ:1033553122 1. match_all 1 2. match 2 3. match_phrase 5 4. match_phr ...

  6. Elasticsearch学习笔记(二)Search API 与 Query DSL

    一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以 ...

  7. Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query

    目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文 ...

  8. Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了

    目录 引言 构建示例 match operator 参数 analyzer lenient 参数 Fuzziness fuzzniess 参数 什么是模糊搜索? Levenshtein Edit Di ...

  9. Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述

    目录 引言 概要 Query and filter context Match All Query 全文查询 Full text queries 小结 参考文档 引言 虽然之前做过 elasticse ...

随机推荐

  1. 剑指offer 04:重构二叉树

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  2. Javascript中DataGrid表格纵线添加数据

    接之前写的一篇博客http://www.cnblogs.com/Liu30/p/7229641.html,生成一个6*24的表格之后,添加数据 表格数据一般都是按行添加,我所做的这个表格是想添加一天2 ...

  3. PHP设计模式概念

    设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案 设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案.面向对象 ...

  4. python模块--os模块

    打印文件的绝对路径:os.path.abspath(__file__) os.path.dirname("/root/python/test.py")   #只取目录名'/root ...

  5. css实现响应式布局的相关内容

    所以我就在做自适应的时候查了一些资料 首先我发现一个问题:有响应式布局和自适应布局两种布局效果 简单来说,响应式布局就是不同的设备无论大小 布局都自动调整大小 页面布局都一样 可以保证无论什么设备 用 ...

  6. 2015-10-21 C#1

    C#(一) 一.C#的数值类型 byte----字节型 short---短整型 int------整型 long----长整型 char----字符型 float----单精度型 double--双精 ...

  7. 如何 distinct 只对一个字段有用,同时查出其他字段

    转至:http://blog.csdn.net/u013402772/article/details/51262524 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有d ...

  8. Discuz!安装搭建

    Discuz!介绍 Discuz!是一款由php语言开发的论坛源代码包,运行在lamp平之上或者lnmp之上,点击此处打开官方网站 环境介绍 本次安装采用最简配置,全部用yum安装,php采用模块方式 ...

  9. cocoa pods自己的笔记

    备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!! 卡主不动 安装流程:http://www.tuicool.com/articles/qaMfuy ...

  10. 马凯军201771010116《面向对象程序设计(java)》第一周学习总结

    马凯军201771010116<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.co ...