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

微信小程序开发报价烟台网站快速优化排名

微信小程序开发报价,烟台网站快速优化排名,怎么免费建公司网站,网站群建设优点RestClient 基础 前言一、RestAPI1. 初始化 *RestClient*2. 创建索引库3. 删除索引库4. 判断索引库是否存在 二、RestClient操作文档1.新增文档2.查询文档3. 删除文档4. 修改文档5. 批量导入文档 前言 ES官方提供了各种不同语言的客户端用来操作ES#xff0c;这些客户端的本质… RestClient 基础 前言一、RestAPI1. 初始化 *RestClient*2. 创建索引库3. 删除索引库4. 判断索引库是否存在 二、RestClient操作文档1.新增文档2.查询文档3. 删除文档4. 修改文档5. 批量导入文档 前言 ES官方提供了各种不同语言的客户端用来操作ES这些客户端的本质就是组装DSL语句通过http请求发送给ES。 一、RestAPI 1. 初始化 RestClient 在ES提供的API中与ES一切交互都封装在一个名为 RestHighLevelClient 的类中必须完成这个对象的初始化建立与ES的连接。 RestHighLevelClient client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://192.168.74.129:9200) ));2. 创建索引库 由于要实现对商品的搜索所以我们需要将商品添加到ES中不过需要根据搜索业务的需求来设定索引库的结构而不是把MySQL数据全部写到ES。 首先要创建 Mapping映射然后创建索引创建索引主要分为三步 创建Request对象因为是创建索引库的操作因此Request是 CreateIndexRequest。添加请求参数其实就是Json格式的Mapping映射参数。因为json字符串很长可以定义一个静态字符常量MAPPING_TEMPLATE使代码看起来更优雅。发送请求client.indices()方法的返回值是IndicesClient类型封装了所有与索引库操作相关的方法。例如创建索引、删除索引、判断索引是否存在等。 3. 删除索引库 创建Request对象这次是DeleteIndexRequest对象。准备参数。这里无参因此省略。发送请求该用delete方法。 Test void testDeleteIndex() throws IOException {// 1.创建Request对象DeleteIndexRequest request new DeleteIndexRequest(items);// 2.发送请求client.indices().delete(request, RequestOptions.DEFAULT); }4. 判断索引库是否存在 创建Request对象。这次是GetIndexRequest对象准备参数。这里是无参直接省略发送请求。改用exists方法 Test void testExistsIndex() throws IOException {// 1.创建Request对象GetIndexRequest request new GetIndexRequest(items);// 2.发送请求boolean exists client.indices().exists(request, RequestOptions.DEFAULT);// 3.输出System.err.println(exists ? 索引库已经存在 : 索引库不存在); }二、RestClient操作文档 1.新增文档 我们需要将数据库中的商品信息导入ES中由于索引库结构与数据库结构还存在一些差异因此我们要定义一个索引库结构对应的实体ItemDoc。 接下来与索引库操作的API非常相似也是分三步走变化的地方在于这里直接使用client.xxx() 的API不再需要client.indices()了。 由于导入了真实数据除了三步走之外还需要做几点工作 根据id查询商品数据商品数据来自于数据库我们需要先查询处理得到Item对象。将Item对象封装为ItemDoc即转换为文档类型。ItemDoc需要序列化为JSON Test void testAddDocument() throws IOException {// 1.根据id查询商品数据Item item itemService.getById(100002644680L);// 2.转换为文档类型ItemDoc itemDoc BeanUtil.copyProperties(item, ItemDoc.class);// 3.将ItemDTO转jsonString doc JSONUtil.toJsonStr(itemDoc);// 1.准备Request对象IndexRequest request new IndexRequest(items).id(itemDoc.getId());// 2.准备Json文档request.source(doc, XContentType.JSON);// 3.发送请求client.index(request, RequestOptions.DEFAULT); }总体流程如下 1根据id查询商品数据Item2将Item封装为ItemDoc3将ItemDoc序列化为JSON4创建IndexRequest指定索引库名和id5准备请求参数也就是JSON文档6发送请求 2.查询文档 查询的目的是得到结果解析为ItemDoc就是对JSON作反序列化 Test void testGetDocumentById() throws IOException {// 1.准备Request对象GetRequest request new GetRequest(items).id(100002644680);// 2.发送请求GetResponse response client.get(request, RequestOptions.DEFAULT);// 3.获取响应结果中的sourceString json response.getSourceAsString();ItemDoc itemDoc JSONUtil.toBean(json, ItemDoc.class);System.out.println(itemDoc ItemDoc); }3. 删除文档 Test void testDeleteDocument() throws IOException {// 1.准备Request两个参数第一个是索引库名第二个是文档idDeleteRequest request new DeleteRequest(item, 100002644680);// 2.发送请求client.delete(request, RequestOptions.DEFAULT); }4. 修改文档 修改主要有两种方式 全量修改本质是先根据id删除再新增局部修改修改文档中的指定字段值 由于在RestClient的API中全量修改与新增的API完全一致判断依据是ID 如果新增时ID已经存在则修改如果新增时ID不存在则新增 因此我们主要关注局部修改的API即可。与之前类似也是三步走 1准备Request对象。这次是修改所以是UpdateRequest。2准备参数。也就是JSON文档里面包含要修改的字段。3更新文档。这里调用client.update()方法。 Test void testUpdateDocument() throws IOException {// 1.准备RequestUpdateRequest request new UpdateRequest(items, 100002644680);// 2.准备请求参数request.doc(price, 58800,commentCount, 1);// 3.发送请求client.update(request, RequestOptions.DEFAULT); }5. 批量导入文档 在实际项目中数据库的商品数据会达到数十万甚至数百万条我们如果要将这些数据导入索引库肯定不能逐条导入而是采用批处理方案。常见的方案有 利用Logstash批量导入 需要安装Logstash对数据的再加工能力较弱无需编码但要学习编写Logstash导入配置 利用JavaAPI批量导入 需要编码但基于JavaAPI学习成本低更加灵活可以任意对数据做再加工处理后写入索引库 接下来我们利用JavaAPI实现批量文档导入。 批处理与前面讲的文档的CRUD步骤基本一致 创建Request但这次用的是BulkRequest准备请求参数发送请求这次要用到client.bulk()方法 当我们要导入商品数据时由于商品数量达到数十万因此不可能一次性全部导入。建议采用循环遍历方式每次导入1000条左右的数据。 Test void testLoadItemDocs() throws IOException {// 分页查询商品数据int pageNo 1;int size 1000;while (true) {PageItem page itemService.lambdaQuery().eq(Item::getStatus, 1).page(new PageItem(pageNo, size));// 非空校验ListItem 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;} }
http://www.w-s-a.com/news/939235/

相关文章:

  • 网站建设氵金手指下拉十二深圳网站建设售后服务
  • 上海网站设计价青海企业网站制作
  • 静态网站做新闻系统深圳外贸网站建设哪家好
  • 网站如何做词360免费wifi老是掉线怎么办
  • 网站建设分金手指排名十八iis10 wordpress
  • 成都网站优化公司哪家好网站建设帮助中心
  • 做外单什么网站好佛山市建设企业网站服务机构
  • 哪些网站是单页面应用程序北京门头沟山洪暴发
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题关键词优化收费标准
  • 网站设计和备案企业官网网站建设免费
  • 公司概况-环保公司网站模板搜索引擎营销的基本流程
  • 门户网站建设经验天津市建设银行租房网站
  • 百度推广 帮做网站吗怎样修改网站的主页内容
  • 网站怎么做dns解析公司官网改版方案
  • 湛江市住房和城乡建设局网站杭州网站公司哪家服务好
  • 设计网站公司湖南岚鸿设计镜像的网站怎么做排名
  • 你注册过哪些网站微信app下载安装官方版2019
  • 杭州滨江的网站建设公司人才招聘网网站策划方案
  • 门户网站是指提供什么的网站网站优化需要工具
  • 和小男生做的网站代理公司注册步骤
  • 天猫网站建设的目标是什么seo有些什么关键词
  • 网站前端建设都需要什么莱芜信息港网页
  • 如何做360网站优化网站建设培训教程新手入门到精通
  • 做网站有的浏览器怎么做网站网站赚钱
  • 织梦 做网站 教程百度登录个人中心官网
  • ftp怎么修改网站wordpress分享积分
  • 营销策划方案的步骤西安关键词优化软件
  • 南宁自己的网站移动互联网技术学什么
  • 2017湖北建设教育协会网站自己接单做网站
  • 定制网站建设制作h5网站要多久