文章目录
前言
最近需要对ES数据进行分析和查询, 之前因为在入门ES时没有好好做笔记和整理 。
1. sql转ES工具
https://printlove.cn/tools/sql2es/
可以把基本的sql查询条件 转成es查询条件 , 适当的使用的可以增加自己写es的效果

2. Kibana VS Postman /ApiPost
一般在写java ES查询时, 习惯先用 kibana 或者postman 构建ES 查询json,
其实两个工具各有优势,
- kibana 的优势是具备词语提示 ,只能请求kibana绑定的es地址

- postman的优势是可以注释json , 请求多个ES地址( 比如开发、测试环境)

两个工具都还不错, 个人偏向于postman 一点,因为注释 调试起来比较方便。
3 .es json 转java
按照json的结构,可以轻松的写出java代码 ,根据query key的名称,使用QueryBuilders 构建 , 根据aggs (aggregations 的简称) key的名称,使用AggregationBuilders构建 , 示例如下
- 示例json
{
"query": {
"bool": {
"must": [
{
// 时间范围
"range": {
"create_at": {
"from": "2023-09-01",
"to": "2023-09-12"
}
}
},
// 分值
{
"exists": {
"field": "score"
}
}
]
}
},
"aggs": {
"name_group": {
// 根据name分组 ,根据每组最大score排序
"terms": {
"field": "name",
"order": {
"max_score": "desc"
}
},
"aggs": {
// 最大分值
"max_score": {
"max": {
"field": "score"
}
}
}
}
}
}
- java示例
// query --> java
BoolQueryBuilder conditionsBoolQuery =QueryBuilders.boolQuery()
.must(QueryBuilders.rangeQuery("create_at").from(query.getStartDateTimestamp()).to(query.getEndDateTimestamp()))
.must(QueryBuilders.existsQuery("location.county_code"));
// agg -->java
AggregationBuilder aggGroup = AggregationBuilders

本文介绍了如何使用SQL转ES工具将SQL查询转换为ES查询,比较了Kibana和Postman在ES查询中的作用,以及如何通过esjson转java构建复杂的ES查询。EsHelper工具简化了Elasticsearch请求的验证。最后,展示了在IDE中通过这些工具进行操作的效果。

3561

被折叠的 条评论
为什么被折叠?



