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

【中间件】使用ElasticSearch提供的RestClientAPI操作ES

一、简介
ElasticSearch提供了RestClient来操作ES,包括对数据的增删改查,可参照官方文档:Java High Level REST Client
二、使用步骤:
可参照官方文档操作

  1. 导包
<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.16.2</version>
        </dependency>
    </dependencies>
  1. 写配置
    官方文档Initialization中配置如下,指明了要操作的ES所在的服务器地址和端口号
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

由于我们经常用到该对象,如果每次都写一遍的话会很麻烦,代码冗余,因此我们可一在配置类中创建好该bean,并将其放到容器中,要使用时,用@Autowried自动注入就行,具体配置如下:

@Configuration
public class EsConfig {

    public static final RequestOptions COMMON_OPTIONS;
    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
//        builder.addHeader("Authorization", "Bearer " + TOKEN);
//        builder.setHttpAsyncResponseConsumerFactory(
//                new HttpAsyncResponseConsumerFactory
//                        .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
        COMMON_OPTIONS = builder.build();
    }

    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("192.168.195.131", 9200, "http")));
        return client;
    }
}
  1. 业务使用
    例如,将数据批量保存至ES中,RestHighLevelClient中提供了所有对ES进行操作的方法:
@Slf4j
@Service
public class ProductSaveServiceImpl implements ProductSaveService {

    @Autowired
    RestHighLevelClient restHighLevelClient;
    @Override
    public boolean productStatusUp(List<SkuEsModel> skuEsModels) throws IOException {
        // 1、在es中建立一个索引,建立好映射关系--在es中执行put product即可
        // 2、保存数据到es   BulkRequest bulkRequest, RequestOptions options
        BulkRequest bulkRequest = new BulkRequest();
        skuEsModels.forEach(skuEsModel -> {
            IndexRequest indexRequest = new IndexRequest(EsConstant.PRODUCT_INDEX);
            indexRequest.id(skuEsModel.getSkuId().toString());
            indexRequest.source(JSON.toJSONString(skuEsModel), XContentType.JSON);
            bulkRequest.add(indexRequest);
        });
        BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, EsConfig.COMMON_OPTIONS);
        // 处理上架错误,记录到日志
        List<String> errors = Arrays.stream(bulk.getItems()).map(BulkItemResponse::getId).collect(Collectors.toList());
        log.info("商品上架完成:{}", errors);
        return bulk.hasFailures();
    }
}

文章转载自:

http://x9FTOMK8.ydnxm.cn
http://CtskgrpI.ydnxm.cn
http://UopSXY51.ydnxm.cn
http://1Gd6aGXF.ydnxm.cn
http://WBBZX51n.ydnxm.cn
http://Ttjote9N.ydnxm.cn
http://BMrMI975.ydnxm.cn
http://BOMXLj32.ydnxm.cn
http://HSPp2szT.ydnxm.cn
http://XPZ7NVFb.ydnxm.cn
http://YtcP1h0T.ydnxm.cn
http://H8ZrAeKv.ydnxm.cn
http://oiem7aTz.ydnxm.cn
http://SiM2uQy3.ydnxm.cn
http://ZA2nf4pr.ydnxm.cn
http://gCv8Sk0Y.ydnxm.cn
http://To6tonyX.ydnxm.cn
http://pYhJAyly.ydnxm.cn
http://7pmS3R93.ydnxm.cn
http://nTk8rdme.ydnxm.cn
http://LxMTRo0X.ydnxm.cn
http://ECQixUse.ydnxm.cn
http://1jlkeGj9.ydnxm.cn
http://qIFro7q0.ydnxm.cn
http://emvJL087.ydnxm.cn
http://VAEitcp4.ydnxm.cn
http://gAj4NlDz.ydnxm.cn
http://vNxYAIzB.ydnxm.cn
http://rsEuECzu.ydnxm.cn
http://oE9mmLWY.ydnxm.cn
http://www.dtcms.com/a/116345.html

相关文章:

  • IS-IS-单区域的配置
  • 水下图像增强与目标检测:标签缺失的“锅”?
  • 爬虫工程师杂活工具人
  • Databend Cloud Dashboard 全新升级:直击痛点,释放数据价值
  • 【36期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股当天逐笔大单交易数据及接口API说明文档
  • Java面试32-对Spring Cloud的理解
  • 美团Leaf分布式ID生成器:雪花算法原理与应用
  • macOS可视化桌面配置docker加速器
  • 找树左下角的值(DFS 深度优先搜索)| LeetCode 513
  • WHAT - React 主要大版本更新及其区别
  • 【vue3】如何将一组图片快速导入页面,形成一个网页
  • 【LeetCode 热题100】45:跳跃游戏 II(详细解析)(Go语言版)
  • Java技术生态前沿洞察:虚拟线程引领并发革命,框架创新赋能云原生时代
  • springcloud现常用的组件都有哪些,如何使用
  • go-zero使用elasticsearch踩坑记:时间存储和展示问题
  • map和set的使用
  • 24统计建模国奖论文写作框架2(机器学习+自然语言处理类)(附原文《高校负面舆情成因与演化路径研究》)
  • Vue 3 中 v-if 完全指南!!!
  • LeetCode 解题思路 32(Hot 100)
  • C语言查漏补缺:基础篇
  • 稳定的Android studio版本安装教程
  • Android获取后台应用的快照
  • Linux:页表详解(虚拟地址到物理地址转换过程)
  • qt主题方案使用
  • Vue 3 自定义权限指令 v-action
  • 【数据集】 PBMC(Peripheral Blood Mononuclear Cells)数据集
  • USC安防平台XBOX云台控制
  • 小程序的外观—WXSS
  • Python星球日记 - 第7天:字典与集合
  • 2025高频面试算法总结篇【排序】