当前位置: 首页 > wzjs >正文

外包网站设计哪家好邵阳专业网站设计

外包网站设计哪家好,邵阳专业网站设计,vs2012网站开发环境,罗湖附近公司做网站建设文章目录 es8 API基础配置和bean注入高阶使用1:引入elasticsearchClient2:查询所有索引3:查询某个索引4:创建索引5:删除指定索引6:查询索引的映射7:创建索引指定映射8:创建文档使用HashMap作为数据存储容器使用自定义类作为数据存储容器使用外…

文章目录

  • es8 API基础配置和bean注入
  • 高阶使用
    • 1:引入elasticsearchClient
    • 2:查询所有索引
    • 3:查询某个索引
    • 4:创建索引
    • 5:删除指定索引
    • 6:查询索引的映射
    • 7:创建索引指定映射
    • 8:创建文档
      • 使用HashMap作为数据存储容器
      • 使用自定义类作为数据存储容器
      • 使用外部JSON数据创建
    • 9: 查询所有文档
    • 10:根据ID查询文档
    • 11:删除文档
    • 12:修改文档
      • 全覆盖
      • 修改部分文档
    • 13:批量操作
      • 批量新增
      • 批量删除
      • 批量更新
  • DSL查询
    • 1:matchAll查询所有文档
    • 2:match 根据字段查询
    • 3:多id查询
    • 4:term 不分词查询
    • 5:范围查询
    • 6: 前缀查询
    • 7:匹配查询
      • //匹配查询
      • ?单字符匹配
    • 8:模糊查询
    • 9:多条件查询
    • 10:多字段查询-multiMatch
    • 11:高亮显示
    • 12:分页查询
    • 12-1:使用分页时,最多返回10000条。需要进行设置
    • 13:排序
    • 14:指定字段查询
    • 15:聚合查询-求最大值
    • 16:桶聚合查询-劣势 group by

es8 API基础配置和bean注入

Elasticsearch-06-Elasticsearch Java API Client-Elasticsearch 8.0 的基础配置和使用

高阶使用

1:引入elasticsearchClient

通过之前的配置,目前已经将elasticsearchClient 注入了容器中,后续只要引入即可

	@AutowiredElasticsearchClient elasticsearchClient;

还不知道怎么注入elasticsearchClient的去看我上篇文章
Elasticsearch-06-Elasticsearch Java API Client-Elasticsearch 8.0 的基础配置和使用

2:查询所有索引

//省略连接...final GetIndexResponse all = client.indices().get(query -> query.index("_all"));System.out.println(all.toString());
//省略关闭...

3:查询某个索引

        //查询某个索引final GetIndexResponse products = client.indices().get(query -> query.index("products"));System.err.println(products.toString());

4:创建索引

		//查询某个索引是否存在boolean exists = client.indices().exists(query -> query.index("products")).value();System.out.println(exists);if (exists) {System.err.println("索引已存在");} else {final CreateIndexResponse products = client.indices().create(builder -> builder.index("products"));System.err.println(products.acknowledged());}

5:删除指定索引

        //删除指定索引boolean exists = client.indices().exists(query -> query.index("products")).value();System.out.println(exists);if (exists) {DeleteIndexResponse response = client.indices().delete(query -> query.index("products"));System.err.println(response.acknowledged());} else {System.err.println("索引不存在");}

6:查询索引的映射

        //查询映射信息final GetIndexResponse response = client.indices().get(builder -> builder.index("produces"));System.err.println(response.result().get("produces").mappings());

7:创建索引指定映射

numberOfReplicas(“1”):设置副本
numberOfShards(“1”):设置分片

        //创建索引指定映射,分片和副本信息final CreateIndexResponse response = client.indices().create(builder ->builder.settings(indexSetting -> indexSetting.numberOfReplicas("1").numberOfShards("1")).mappings(map -> map.properties("name", propertyBuilder -> propertyBuilder.keyword(keywordProperty -> keywordProperty)).properties("price", propertyBuilder -> propertyBuilder.double_(doubleNumProperty -> doubleNumProperty)).properties("des", propertyBuilder -> propertyBuilder.text(textProperty -> textProperty.analyzer("ik_smart").searchAnalyzer("ik_smart")))).index("produces"));

8:创建文档

使用HashMap作为数据存储容器

        //创建文档//1.创建HashMap进行存储数据,文档要对应映射final HashMap<String, Object> doc = new HashMap<>();doc.put("name","辣条");doc.put("age",12);doc.put("id","11111");//2.将文档存入索引中final IndexResponse response = client.index(builder -> builder.index("produces").id(doc.get("id")).document(doc));System.err.println(response.version());

使用自定义类作为数据存储容器

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Produce {private String id;private String name;private double age;
}
        //创建文档final Produce produce = new Produce("123", "小明", 18);final IndexResponse response = client.index(builder -> builder.index("produces").id(produce.getId()).document(produce));System.err.println(response.version());

使用外部JSON数据创建

这里要注意我们需要使用StringReader进行读取时使用replace函数将设置的’改为",当然这在真实的业务中肯定不会有,因为真实业务中一定是标准的JSON数据,无需使用replace进行替换了

        //创建文档final StringReader input = new StringReader("{'name':'农夫三拳','price':3.00,'des':'农夫三拳有点甜'}".replace('\'', '"'));final IndexResponse response = client.index(builder -> builder.index("produces").id("44514").withJson(input));System.err.println(response.version());

9: 查询所有文档

 final SearchResponse<Object> response = client.search(builder -> builder.index("produces"), Object.class);final List<Hit<Object>> hits = response.hits().hits();hits.forEach(x-> System.err.println(x));

10:根据ID查询文档

使用HashMap对应查询

        //查询文档final GetResponse<Map> response = client.get(builder -> builder.index("produces").id("116677"), Map.class);final Map source = response.source();source.forEach((x,y)->{System.err.println(x+":"+y);});

使用自定义类对应查询

        final GetResponse<Produce> response1 = client.get(builder -> builder.index("produces").id("aabbcc123"), Produce.class);final Produce source1 = response1.source();System.err.println(source1.toString());

11:删除文档

        final GetResponse<Produce> response1 = client.get(builder -> builder.index("produces").id("aabbcc123"), Produce.class);final Produce source1 = response1.source();System.err.println(source1.toString());

12:修改文档

全覆盖

        //修改文档(覆盖)final Produce produce = new Produce("ccaabb123", "旺仔摇滚洞", "旺仔摇滚洞乱摇乱滚", 10.23D);final UpdateResponse<Produce> response = client.update(builder -> builder.index("produces").id("aabbcc123").doc(produce), Produce.class);System.err.println(response.shards().successful());

修改部分文档

区别在于我们需要设置.docAsUpsert(true)表明是修改部分而不是覆盖

        //修改文档(部分修改)
//        final Produce produce = new Produce("ccaabb123", "旺仔摇滚洞", "旺仔摇滚洞乱摇乱滚", 10.23D);final Produce produce = new Produce();produce.setName("旺仔摇不动");final UpdateResponse<Produce> response = client.update(builder -> builder.index("produces").id("aabbcc123").doc(produce).docAsUpsert(true), Produce.class);System.err.println(response.shards().successful());

13:批量操作

批量新增

		produceList.add(produce1);produceList.add(produce2);produceList.add(produce3);//构建BulkRequestfinal BulkRequest.Builder br = new BulkRequest.Builder();for (Produce produce : produceList) {br.operations(op->op.index(idx->idx.index("produces").id(produce.getSku()).document(produce)));}final BulkResponse response = client.bulk(br.build());

批量删除

List<BulkOperation> bulkOperations = new ArrayList<>();// 向集合中添加需要删除的文档id信息for (int i = 0; i < dto.getIds().size(); i++) {int finalI = i;bulkOperations.add(BulkOperation.of(b -> b.delete((d -> d.index(dto.getIndex()).id(dto.getIds().get(finalI))))));}// 调用客户端的bulk方法,并获取批量操作响应结果BulkResponse response = client.bulk(e -> e.index(dto.getIndex()).operations(bulkOperations));

批量更新

JSONObject jsonObject = new JSONObject();jsonObject.put("id", deleteIds);jsonObject.put("status", 1);BulkRequest.Builder br = new BulkRequest.Builder();for (String deleteId : deleteIds) {br.operations(op -> op.update(idx ->idx.index(EsIndexConstants.opinion_information).id(deleteId).action(a -> a.doc(jsonObject)//局部修改.docAsUpsert(true)//局部修改))).refresh(Refresh.True);}BulkRequest bulkRequest = br.build();BulkResponse result = null;try {result = elasticsearchClient.bulk(bulkRequest);} catch (IOException e) {throw new RuntimeException(e);}

DSL查询

1:matchAll查询所有文档

        //matchAllfinal SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.matchAll(v->v)), Produce.class);System.err.println(response.hits().hits());

2:match 根据字段查询

        //简单query方式查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.match(t ->t.field("name").query("龙虎万精油"))), Produce.class);System.err.println(response.hits().hits());

3:多id查询

        //多ID查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.ids(sid->sid.values("1000","1001"))), Produce.class);System.err.println(response.hits().hits());

4:term 不分词查询

        //term不分词条件查询final SearchResponse<Produce> response = client.search(builder -> builder.index("produces").query(q -> q.term(t -> t.field("name").value("风油精"))), Produce.class);System.err.println(response.hits().hits());

5:范围查询

        //范围查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.range(r ->r.field("price").gt(JsonData.of(5D)).lt(JsonData.of(15D)))),Produce.class);System.err.println(response.hits().hits());

6: 前缀查询

  final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.prefix(p->p.field("name").value("六"))),Produce.class);System.err.println(response.hits().hits());

7:匹配查询

//匹配查询

  final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.wildcard(w->w.field("name").value("风*"))),Produce.class);System.err.println(response.hits().hits());

?单字符匹配

        //匹配查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.wildcard(w->w.field("name").value("风?精"))),Produce.class);System.err.println(response.hits().hits());

8:模糊查询

        //模糊查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.fuzzy(f->f.field("name").value("六仙花露水"))),Produce.class);System.err.println(response.hits().hits());

9:多条件查询

使用bool关键字配合must,should,must_not

  • must:所有条件必须同时成立
  • must_not:所有条件必须同时不成立
  • should:所有条件中成立一个即可
        //多条件final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q ->q.bool(b ->b.must(t ->t.term(v ->v.field("name").value("旺仔摇不动"))).must(t2 ->t2.term(v2 ->v2.field("price").value(0.0D))))),Produce.class);System.err.println(response.hits().hits());

或者创建BoolQuery.Builder,以便进行业务判断是否增加查询条件

 List<FieldValue> fieldValues = new ArrayList<>();fieldValues.add(FieldValue.of(10));fieldValues.add(FieldValue.of(100));BoolQuery.Builder boolQuery = new BoolQuery.Builder();boolQuery.must(t->t.terms(v->v.field("label").terms(term->term.value(fieldValues))));boolQuery.must(t->t.match(f->f.field("name").query("旺仔")));SearchResponse<Object> search = elasticsearchClient.search(builder -> builder.index("my_test_index").query(q->q.bool(boolQuery.build())),Object.class);

10:多字段查询-multiMatch

        //多字段查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q->q.multiMatch(qs->qs.query("蚊虫叮咬 辣眼睛").fields("name","des"))),Produce.class);System.err.println(response.hits().hits());

11:高亮显示

我们注意要设置前缀和后缀

        //高亮显示final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q -> q.match(v -> v.field("name").query("风油精"))).highlight(h -> h.preTags("<span>").postTags("<span>").fields("name", hf -> hf)),Produce.class);System.err.println(response.toString());

12:分页查询

我们使用match_all进行全部搜索的时候使用size关键字设置每一页的大小,使用from关键字设置页码
from的计算公式:(页码-1)*size

        //分页查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q->q.matchAll(v->v)).size(2).from(0),Produce.class);System.err.println(response.hits().hits());

12-1:使用分页时,最多返回10000条。需要进行设置

        //分页查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q->q.matchAll(v->v)).size(2).from(0).trackTotalHits(t->t.enabled(true)),Produce.class);System.err.println(response.hits().hits());

13:排序

使用sort关键字指定需要进行排序的字段设置排序类型即可,我们这里会使用到SortOrder枚举类来进行指定排序方式

desc:降序
asc:升序

        //排序final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q->q.matchAll(v->v)).sort(builder1 -> builder1.field(f->f.field("price").order(SortOrder.Asc))),Produce.class);System.err.println(response.hits().hits());

14:指定字段查询

使用_source关键字在数组中设置需要展示的字段
值得注意的是在source方法中需要我们写filter去指定是include包含或是exclude去除xx字段

        //指定字段查询final SearchResponse<Produce> response = client.search(builder ->builder.index("produces").query(q->q.matchAll(v->v)).source(s->s.filter(v->v.includes("price","des"))),Produce.class);System.err.println(response.hits().hits());

15:聚合查询-求最大值

SearchResponse<Object> search = elasticsearchClient.search(builder ->builder.index("my_test_index").from(0).size(1).aggregations("aa", t ->t.max(f->f.field("type"))), Object.class);EsResult esResult = EsUtils.searchAnalysis(search);Aggregate aa = esResult.getAggregations().get("aa");LongTermsAggregate lterms = aa.lterms();Buckets<LongTermsBucket> buckets = lterms.buckets();List<LongTermsBucket> array = buckets.array();

16:桶聚合查询-劣势 group by

SearchResponse<JSONObject> search = elasticsearchClient.search(builder ->builder.index(EsIndexConstants.article_info).query(t->t.range(f->f.field("create_time").gte(JsonData.of(startDate)).lte(JsonData.of(endDate)))).from(0).size(1).aggregations("countValue", t ->t.terms(f -> f.field("ata_type.keyword"))), JSONObject.class);
Aggregate countValue = search .getAggregations().get("countValue");
List<StringTermsBucket> array = countValue.sterms().buckets().array();

文章转载自:

http://wGLxDBfr.zdgyg.cn
http://5Li0g13g.zdgyg.cn
http://I9DYrIc3.zdgyg.cn
http://LhdaUAg5.zdgyg.cn
http://szu5Wpgw.zdgyg.cn
http://YbBAVG2I.zdgyg.cn
http://vBqf9ijg.zdgyg.cn
http://dEwMRIwl.zdgyg.cn
http://Y4zqwpA0.zdgyg.cn
http://4bjAfDhn.zdgyg.cn
http://8QRWGh6y.zdgyg.cn
http://v5UC4s6U.zdgyg.cn
http://ddpI6dbW.zdgyg.cn
http://1ykJ99lQ.zdgyg.cn
http://JySpcEyS.zdgyg.cn
http://rVzRClge.zdgyg.cn
http://CeZ4dznx.zdgyg.cn
http://UYMtYaYi.zdgyg.cn
http://qQHS7rI2.zdgyg.cn
http://41oFUi1m.zdgyg.cn
http://erVLTL9n.zdgyg.cn
http://wWIYKsmH.zdgyg.cn
http://fFPOI1Hs.zdgyg.cn
http://Py2paIBw.zdgyg.cn
http://d20DXWo4.zdgyg.cn
http://BtzRkKrW.zdgyg.cn
http://eDhpoaF2.zdgyg.cn
http://n2wQEPLS.zdgyg.cn
http://rjoyF4Pk.zdgyg.cn
http://jqRNhb2O.zdgyg.cn
http://www.dtcms.com/wzjs/734305.html

相关文章:

  • 嘉兴网站建设wmcn投票网站源码php
  • 国外个人网站模板好三网网站
  • 新手自学做网站多久做网站要排版吗
  • 做个网站得多少钱建网站个人主机做服务器
  • 北京市建设工程造价管理协会网站网站技术建设维护技术论文
  • 网站标题更改万网官网4399
  • 盘锦做网站选哪家wordpress link
  • 做非洲出口的网站网络工程就业方向及就业前景
  • 只做外贸的公司网站劲松做网站的公司
  • 什么事三合一网站网站建设相关视频教程
  • 柳州洛维建设网站百度推广要企业自己做网站吗
  • 西安专业得网站建设公司个人博客网页设计
  • 电子商务网站建设需要做好哪些准备6创造软件的软件下载
  • 顺德品牌网站建设价格建网站需要的费用
  • 网站建设优化制作公司网站打开空白页
  • 护卫神做的网站访问seo排名赚app
  • 宿州北京网站建设如何用wordpress做网页
  • 网站功能分析wordpress扫码下载
  • 官方网站welcome南京价格网站建设
  • it网站开发学做淘宝客网站
  • 英语门户网站织梦源码做别人一样的网站吗
  • 免费搭建平台网站百度搜索怎么优化
  • 网站开发汇报阿里云 做网站
  • 网站用什么平台开发广州seo软件
  • 建设银行集团网站首页长沙百度推广优化排名
  • 垦利网站设计广州开发区建设局网站
  • 申请做网站编辑组长的工作设想旅游网站开发方案ppt
  • 论论坛坛网网站站建建设设医院网站怎么做
  • 建设一个境外网站阿里巴巴做网站么
  • 剑网三奇遇查询网站怎么做南京广告公司一览表