如何用java使用es

添加依赖

如何连接es客户端

RestHighLevelClient 代表是高级客户端

其中hostname:es的服务器地址,prot端口号 ,scheme:http还是https

如果不在使用es可以进行关闭,可以防止浪费一些资源

java如何创建索引:

接下来到kibanba看下是否有这个索引

java如何查询索引

可以看到返回的结果是相同的,创建时间,分片,副本,uuid,版本号,索引名字

java如何删除索引

删除后在kinbaba查询这个索引

结果是没有这个索引

java如何创建数据

第一次操作:created

kinbanba结果

第二次操作:update

同一个id他会任务是同一个数据,会直接进行修改 但是这种操作时全局修改。

java如何修改数据

局部修改数据返回结果:updated

kibanba数据

java如何查询数据

java如何删除数据

kibanba查询数据

结果没有查到

java如何批量增加数据

kibanba结果

这种方式和单个新增的区别是什么呢

批量就是多个请求包装在一块一起发送

java如何批量删除

kibanba的结果

java如何全量查询

kibanba结果

java如何分页查询&条件查询

一 精准查询:查询年龄等于20的数据   关键字 termQueyr

二 分页查询  关键字 from           size

三 排序查询 关键字:sort

时间:1ms
条数:6 hits
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1001",
  "_score" : null,
  "_source" : {
    "sex" : "男",
    "userName" : "胡因",
    "age" : 20
  },
  "sort" : [
    20
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "4",
  "_score" : null,
  "_source" : {
    "age" : 20,
    "sex" : "女",
    "userName" : "胡因5"
  },
  "sort" : [
    20
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "3",
  "_score" : null,
  "_source" : {
    "age" : 4,
    "sex" : "女",
    "userName" : "胡因4"
  },
  "sort" : [
    4
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "2",
  "_score" : null,
  "_source" : {
    "age" : 3,
    "sex" : "男",
    "userName" : "胡因3"
  },
  "sort" : [
    3
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1",
  "_score" : null,
  "_source" : {
    "age" : 2,
    "sex" : "男",
    "userName" : "胡因2"
  },
  "sort" : [
    2
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "0",
  "_score" : null,
  "_source" : {
    "age" : 1,
    "sex" : "女",
    "userName" : "胡因1"
  },
  "sort" : [
    1
  ]
}
 

四 值查询出必要字段:关键字 fetchSource

{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1001",
  "_score" : null,
  "_source" : {
    "userName" : "胡因"
  },
  "sort" : [
    20
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "4",
  "_score" : null,
  "_source" : {
    "userName" : "胡因5"
  },
  "sort" : [
    20
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "3",
  "_score" : null,
  "_source" : {
    "userName" : "胡因4"
  },
  "sort" : [
    4
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "2",
  "_score" : null,
  "_source" : {
    "userName" : "胡因3"
  },
  "sort" : [
    3
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1",
  "_score" : null,
  "_source" : {
    "userName" : "胡因2"
  },
  "sort" : [
    2
  ]
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "0",
  "_score" : null,
  "_source" : {
    "userName" : "胡因1"
  },
  "sort" : [
    1
  ]
}
 

java如何组合查询&范围查询

一组合查询:关键字 BoolQueryBuilder        must

查询出来3条原因是

问题可能出在你的搜索条件上。MatchQuery是一个全文搜索查询,它会对文本字段进行分词,然后进行匹配。由于你的字段userNamesex都是进行分词的文本字段(默认情况下),所以它们会被分词器处理后再进行匹配。在分词器的处理过程中,可能会将“胡因1”分成两个词,“胡因”和“1”,所以它们在匹配过程中会被匹配到。

时间:1ms
条数:3 hits
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1001",
  "_score" : 0.8237212,
  "_source" : {
    "sex" : "男",
    "userName" : "胡因",
    "age" : 20
  }
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1",
  "_score" : 0.8054662,
  "_source" : {
    "age" : 2,
    "sex" : "男",
    "userName" : "胡因2"
  }
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "2",
  "_score" : 0.8054662,
  "_source" : {
    "age" : 3,
    "sex" : "男",
    "userName" : "胡因3"
  }
}
如果想解决这种问题:关键字      termQuery精准匹配       keyword 代表不分词 

关于或的条件查询:关键词:should

时间:0s
条数:2 hits
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1001",
  "_score" : 1.7917595,
  "_source" : {
    "sex" : "男",
    "userName" : "胡因",
    "age" : 20
  }
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "0",
  "_score" : 1.0,
  "_source" : {
    "age" : 1,
    "sex" : "女",
    "userName" : "胡因1"
  }
}
 

范围查询:关键字 rangQuery 范围   gte 大于等于 lte 小于等于

时间:0s
条数:3 hits
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "1",
  "_score" : 1.0,
  "_source" : {
    "age" : 2,
    "sex" : "男",
    "userName" : "胡因2"
  }
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "2",
  "_score" : 1.0,
  "_source" : {
    "age" : 3,
    "sex" : "男",
    "userName" : "胡因3"
  }
}
{
  "_index" : "users",
  "_type" : "_doc",
  "_id" : "0",
  "_score" : 1.0,
  "_source" : {
    "age" : 1,
    "sex" : "女",
    "userName" : "胡因1"
  }
}
 

java如何聚合查询 

最大年龄:关键字 AggregationBuilder  max(别名)field(字段)

Max maxAgg = search.getAggregations().get("ageAge");
double value = maxAgg.getValue();

年龄分组 关键字:terms

Terms ageGroup = search.getAggregations().get("ageGroup");
List<? extends Terms.Bucket> buckets = ageGroup.getBuckets();
for (Terms.Bucket bucket : buckets) {
String key = bucket.getKeyAsString(); // 年龄组的键
long docCount = bucket.getDocCount(); // 年龄组的文档数量
System.out.println("年龄组: " + key + ", 文档数量: " + docCount);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值