ES-DSL 或 es-jdbc 语法查询

文章展示了如何使用ES-jdbc的SQL查询语法来操作Elasticsearch索引,与传统数据库查询进行对比。查询涉及固定和动态条件,如payState、verificationState、ticketsCancelState、touristId以及verificationTime的时间范围,并讨论了Elasticsearch中时间格式化的限制,以及如何进行分组聚合。
摘要由CSDN通过智能技术生成

简述:类似于DB库查询的sql语法  ,只是需要使用的语法规则跟表名 等同替换成 ES-jdbc的语法跟索引

例如:ES:索引 ticketing_order_details        DB:表 t_order_details   

          ES:时间格式化 只能单个格式化 年,月,日,时,分,秒  然后进行组合

                YEAR(time),MONTH_OF_YEAR(time) 等等 

          DB:有时间格式化 跟format 函数

format 可以设置其他格式

ES-jdbc 的查询

      查询条件为:

                固定条件1:  payState = 3  

                固定条件2:   verificationState IN ( 1, 2 ) 

                固定条件3: ticketsCancelState IN (0,1,3) 

                动态条件1: touristId = '123456789'

                动态条件2:verificationTime >= '2023-06-28 00:00:00' 

                动态条件3:verificationTime <= '2023-06-28 23:59:59'

写法一:

POST /_sql?format=txt

{
    "query":"SELECT COUNT( detailsId ) AS count,YEAR(verificationTime) AS year, MONTH_OF_YEAR(verificationTime) AS month, DAY_OF_MONTH(verificationTime) AS day,HOUR_OF_DAY(verificationTime) AS hour  FROM ticketing_order_details WHERE payState = 3  AND verificationState IN ( 1, 2 ) AND ticketsCancelState IN (0,1,3)  AND touristId = '123456789' AND verificationTime >= '2023-06-28 00:00:00' AND verificationTime <= '2023-06-28 23:59:59'  GROUP BY  YEAR(verificationTime), MONTH_OF_YEAR(verificationTime), DAY_OF_MONTH(verificationTime),HOUR_OF_DAY(verificationTime)"
}

写法二:

POST /_sql?format=txt

{
    "query":"SELECT COUNT( detailsId ) AS count,YEAR(verificationTime) AS year, MONTH_OF_YEAR(verificationTime) AS month, DAY_OF_MONTH(verificationTime) AS day,HOUR_OF_DAY(verificationTime) AS hour  FROM ticketing_order_details WHERE payState = 3  AND verificationState IN ( 1, 2 ) AND ticketsCancelState IN (0,1,3)  AND touristId = ? AND verificationTime >= ? AND verificationTime <= ?  GROUP BY  YEAR(verificationTime), MONTH_OF_YEAR(verificationTime), DAY_OF_MONTH(verificationTime),HOUR_OF_DAY(verificationTime)",
    "params":[123456789,"2023-06-28 00:00:00","2023-05-28 23:59:59"]
}

Python的elasticsearch-dsl是基于elasticsearch-py封装实现的,提供了更简便的操作elasticsearch的方法。你可以通过安装elasticsearch-dsl库来使用它。安装命令是"pip install elasticsearch-dsl"。如果你在Django项目中使用elasticsearch-dsl,你还可以考虑安装django-elasticsearch-dsl-drf库,它可以将Elasticsearch DSL与Django REST框架集成,提供更方便的使用体验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Elasticsearch python操作实践(elasticsearchElasticsearch DSL)](https://blog.csdn.net/qq_43008709/article/details/109401610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [python中elasticsearch_dsl模块用法详解](https://blog.csdn.net/m0_72557783/article/details/126957624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [django-elasticsearch-dsl-drf:将Elasticsearch DSL与Django REST框架集成](https://download.csdn.net/download/weixin_42131861/15058672)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值