ES
Kotlin
用于Kotlin的Elasticsearch查询
DSL
。
该库旨在最大程度地减少Elasticsearch JSON查询
DSL
与编写kotlin应用程序时使用的API之间的差距。 它与现有的Java API集成在一起,仅提供了更好的语法来构建查询。
Gradle
repositori
es
{
mavenCentral()
maven {
url " http://dl.bintray.com/mbuhot/maven "
dependenci
es
{
compile ' mbuhot:
es
kotlin:0.7.0 '
请参阅了解支持以前的客户端版本的较旧版本。
完整详细信息
< dependency>
< groupId>mbuhot</ groupId
包
es
提供了Elasticsearch查询
DSL
。
不建议使用Go“点导入”,但是,如果您想在这种情况下利用点导入的表现力,我建议将此逻辑抽象为更高级别的查询功能和程序包。 我不建议直接将其点导入其他包中。
如果您不介意疯狂
嵌套
:
query := Pretty ( Query (
Aggs (
Agg ( "r
es
ults" ,
Filter (
Term ( "user.login" , "tj" ),
Range ( "now-7d" , "now" ),
Aggs (
Agg ( "repos" ,
Terms ( "repository.name.keyword" , 100 ),
Aggs (
const convert = require('elasql').convert
convert('SELECT id,name FROM shop WHERE shop_id BETWEEN 5 AND 10 AND type = "cat"')
"query": {
"bool": {
"must": [
"match": {
"type": "cat"
"must_not": [],
"filter": [
英文全称Domain Specific Language,解释为领域专用语言。
DSL
是针对某个特定领域而开发的语言,而我们平时接触 到的C/C++,Java,Python/Ruby,
都属于通用语言,
DSL
就是为了弥补这些通用语言而出现的。
说到编程离不开最基础的CURD
DSL
也一样
我们先说查询,直接上实例
1.全检索
GET 索引名/_search
"quer...
"dttime":{ -- 按照dttime字段过滤时间
"gte":"2022-02-01T00:00:00.116+08:00",
"lt":"2022-03-01T00:00:00.116+08:00"
"match":{
"user_id":"0001dd" --
ES
分组
聚合
查询
求
平
均值
及toHits使用使用场景实现步骤1.注册
es
客户端2. 构造请
求
3.
DSL
语句及查询示例
对
es
中某些字段进行
分组
并对某一个列
聚合
求
平
均值
/最大值/等,并展示未
分组
的列的值,并且用
求
得平
均值
排序
1.注册
es
客户端
用账号密码连接
es
集群
@Configuration
@Data
public class ElasticSearchConfig {
@Value("${elasticsearch.host}")
private String h
aggregations
聚合
,相当于SQL中的group by,但是功能更强大。
es
聚合
分为四种方式:指标
聚合
,桶
聚合
,矩阵
聚合
,管道
聚合
。
常用的为前两种,指标
聚合
,桶
聚合
。
1:指标
聚合
指标
聚合
:Metrics Aggregations,类似于SQL中常见的一些统计方法 COUNT() 、 SUM() 、 MAX() 等。
terms相当于
分组
后统计各组的count()结果
"aggs": {
"t
es
t" : {
"terms" : {
之前有个查询
es
分组
求和
的需
求
,类似关系型数据库 select a ,b ,sum(c) from table group by a,b 当时用
DSL
查询语句实现
这边记录下:
GET /my_index/my_type/_search
"from": 0,
"size": 0,
"aggs": {
"_A_": {
ES
聚合
查询主要分为3类:指标
聚合
、桶
聚合
和管道
聚合
。
本文主要是介绍其中指标
聚合
的相关使用。
如果说桶
聚合
主要是用来做
分组
的,那么指标
聚合
就主要是用来做数据计算的。
桶
聚合
和指标
聚合
一般都会配合使用。