zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    图片懒加载
    文字表情转换成小图标
    页面跳页面的参数获取
    vue v-for里面再套v-if和v-esle
    滚动条样式的修改
    vue-cil生产环境和发布环境的配置
    css隐藏滚动条并且可以滑动
    vue-cli脚手架一些插件安装elementui和axios
    闭包
    定时器、运动、日历
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10646988.html
Copyright © 2011-2022 走看看