• 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

  • 相关阅读:
    [Functional Programming ADT] Initialize Redux Application State Using The State ADT
    [Angular] Angular i18n Pluralization Support
    [Functional Programming ADT] Combine Multiple State ADT Based Redux Reducers
    [Angular] Introduction to Angular Internationalization (i18n)
    [Javascript] Wrap an API with a Proxy
    [React] Detect user activity with a custom useIdle React Hook
    js确认删除对话框
    动态链接库 DLL
    [置顶] 自动视频跟踪系统的解决方案
    Checking Network Configuration requirements Failed
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10646988.html
Copyright © 2020-2023  润新知