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

6.26_JAVA_微服务_Elasticsearch

1、ES文档中keyword意思是:字符串,但不需要分词

2、ES细节CreateIndexRequest request = new CreateIndexRequest("items");会让你导包,会有两个选择:

        import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;

        import org.elasticsearch.client.indices.CreateIndexRequest;

一般选择带client的那个,因为这个用于ES7之后的。而我们IDEA使用的是ES7.12.1

3、ES中文档:document;     库:index

4、下面这个是多个文档(document),而不是一个文档。它们可以存在一个库里。

{"id": 1,"title": "小米手机","price": 3499
}
{"id": 2,"title": "华为手机","price": 4999
}
{"id": 3,"title": "华为小米充电器","price": 49
}
{"id": 4,"title": "小米手环","price": 299
}

 5、不光mapper层可以查询等操作,MP自带的Iservice也可以。

@Test
void testLoadItemDocs() throws IOException {// 分页查询商品数据int pageNo = 1;int size = 1000;while (true) {Page<Item> page = itemService.lambdaQuery().eq(Item::getStatus, 1).page(new Page<Item>(pageNo, size));// 非空校验List<Item> items = page.getRecords();if (CollUtils.isEmpty(items)) {return;}log.info("加载第{}页数据,共{}条", pageNo, items.size());// 1.创建RequestBulkRequest request = new BulkRequest("items");// 2.准备参数,添加多个新增的Requestfor (Item item : items) {// 2.1.转换为文档类型ItemDTOItemDoc itemDoc = BeanUtil.copyProperties(item, ItemDoc.class);// 2.2.创建新增文档的Request对象request.add(new IndexRequest().id(itemDoc.getId()).source(JSONUtil.toJsonStr(itemDoc), XContentType.JSON));}// 3.发送请求client.bulk(request, RequestOptions.DEFAULT);// 翻页pageNo++;}
}

Page<Item> page = itemService.lambdaQuery().eq(Item::getStatus, 1).page(new Page<Item>(pageNo, size));这个lambdaQuery是ItemService继承了Iservice然后Iservice中写了lambdaQuery这个在service层就可以查询的方法。

6、ES的DSL查询分为叶子查询和复合查询

7、看到这个算法公式的时候,我很庆幸自己学的是计算机而不是数学😭。

      I Love Computer Since!

我爱计算机💗

8、下面这个RestClient查询指的是在IDEA中调用API

⭐️9、底层源码分析:

        我们说“大类+点”只能调用方法,不能调用变量,为什么下面这个总感觉有问题。

底层原理是类可以“返回类本身(其实不是类,而是对象)”。并且这个大类通过连续调用自己,最终只返回了一个对象,且只返回了一个对象,也不是返回的类!这点很重要!因此为什么要获取这个类的时候我们要用"大类.Class"

下面这个类调用的不是方法,返回的也不是类本身的对象。这个类调用的是静态的一个变量。

10、复合查询是:包含多个叶子查询

11、下面这个什么意思?是只继承了这个Ixxx接口的唯一一个接口Rxxx

12、这个类是干了个啥事?

 它的底层代码是这样的:

这里的String...意思是可以传入0个、1个或多个字符串。这里如果传入多个字符串的话,这些字符串最终构成了一个String[]数组。并且创建一个SearchSoueceBuilder()   防御性编程。保证每个 SearchRequest 对象被创建后,始终有一个可用的 SearchSourceBuilder,避免后续调用 request.source() 时出现 NullPointerException

13、很重要的代码:   斜杠后面的话很重要//

    @Testvoid testBool() throws IOException {// 1.创建Request,是为了最后执行这个requestSearchRequest request = new SearchRequest("items");BoolQueryBuilder bool = QueryBuilders.boolQuery();bool.must(QueryBuilders.matchQuery("name", "脱脂牛奶"));bool.filter(QueryBuilders.termQuery("brand", "德亚"));bool.filter(QueryBuilders.rangeQuery("price").lte(30000));//把price、30000分别通过rangeQuery、lte这两个方法赋值给了一个QueryBuilders对象,然后又通过BoolQueryBuilder的must方法、filter方法传入了一个只装QueryBuilders的List集合!很重要是集合!request.source().query(bool);//这个source没有传入值,query传入了bool这个值,两个方法同时调用,所以最终返回的一定是个对象,而没有查询。SearchResponse response = client.search(request, RequestOptions.DEFAULT);//构建了一个SearchResponse对象handleResponse(response);//handleResponse执行了response这个对象,实现了搜索。}

相关文章:

  • 网站维护是做什么的seo搜索引擎优化视频
  • 做面食的网站企业网络推广平台
  • 网站建设项目汇报国内好用的搜索引擎
  • 金桥路附近做网站的发布软文是什么意思
  • 公司首页模板深圳网站seo优化
  • 学生网页设计成品网站成功的网络营销案例及分析
  • CRON表达式编辑器与定时任务实现技术文档
  • Linux 统一方式安装多版本 JDK 指南
  • LINUX 626 DNS报错
  • 【工具推荐】WaybackLister——发现潜在目录列表
  • JavaEE:分布式session
  • 2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(五)
  • centos 7 安装NVIDIA Container Toolkit
  • 【unity游戏开发——网络】计算机网络中的三种数据管理模型(分散式、集中式、分布式)和三大通信模型(C/S、B/S、P2P)
  • 环境太多?不好管理怎么办?TakMll 工具帮你快速切换和管理多语言、多版本情况下的版本切换。
  • Tailwind CSS 重用样式
  • 内测分发平台是否支持应用的微服务化部署
  • Spring Boot使用Redis常用场景
  • 代码随想录|图论|04广度优先搜索理论基础
  • Vue 3 最基础核心知识详解
  • Go语言与云原生:Kubernetes Operator开发全流程
  • docker 安装Elasticsearch + kibana + ik分词器
  • Golang单例实现
  • Spring学习笔记【8】
  • 八股文——JAVA基础:基本数据类型与包装类的区别
  • 【Ansible】Ansible入门