首页 > 编程语言 >【ElasticSearch】常用的JAVA API(长期更新)

【ElasticSearch】常用的JAVA API(长期更新)

时间:2022-08-30 20:46:15浏览次数:63  
标签:JAVA Autowired builder queryBuilder private API ElasticSearch elasticsearchTempl

背景

  主要介绍和整理ElasticSearch 常用的API


环境

  SpringBoot2.1+Maven
  Maven依赖

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
        </dependency>

  索引结构

@Data
@Document(indexName = "text-audit", type = "text_audit_type", shards = 1, replicas = 0, createIndex = false)
public class TextModerationEntity {

    @Id
    private Long dbId;
    //.....其他省略
 }

  索引Mapper

public interface TextModerationRepository extends ElasticsearchRepository<TextModerationEntity,Long> {
}

API 

  查询    

    1.分页搜索

@Autowired
private IMTextModerationRepository imTextMdrRepository;

BoolQueryBuilder builder = QueryBuilders.boolQuery();
//......省略其他查询条件
NativeSearchQuery queryBuilder = new NativeSearchQueryBuilder()
                .withQuery(builder)
                .withPageable(PageRequest.of(当前页码 - 1, 每页条数)
              .withSort(SortBuilders.fieldSort("xxxx").order(SortOrder.DESC))
                .build();

Page<IMTextModerationEntity> pageResult = imTextMdrRepository.search(queryBuilder);

     2.根据ID查询

Optional<IMTextModerationEntity> optional = imTextMdrRepository.findById(dbId);

    3.分页查询(根据其他查询条件查询)

@Autowired
 private ElasticsearchTemplate elasticsearchTemplate;       
 
NativeSearchQuery queryBuilder = new NativeSearchQueryBuilder()
                .withQuery(builder)
                .withPageable(PageRequest.of(当前页码 - 1, 每页条数))
                .build();
        Page<IMTextModerationEntity> page = elasticsearchTemplate.queryForPage(queryBuilder, IMTextModerationEntity.class);

    4.列表查询

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;        

NativeSearchQuery queryBuilder = new NativeSearchQueryBuilder()
                .withQuery(builder)
                .build();
List<ImageModerationEntity> entityList = elasticsearchTemplate.queryForList(queryBuilder, ImageModerationEntity.class);

  新增

@Autowired
private IMTextModerationRepository imTextMdrRepository;

IMTextModerationEntity entity = new IMTextModerationEntity();
.......
imTextMdrRepository.save(entity);

  更新

    1.根据文档ID去更新

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;

UpdateRequest updateRequest = new UpdateRequest();
        Map<String, Object> params = Maps.newHashMap();
        params.put("属性名", "属性值");
        updateRequest.doc(params);

        UpdateQuery updateQuery = new UpdateQueryBuilder()
                .withId(String.valueOf(dbId))
                .withClass(ImageModerationEntity.class)
                .withUpdateRequest(updateRequest)
                .build();
        UpdateResponse update = elasticsearchTemplate.update(updateQuery);

    2.根据其他查询条件去更新(相当于updateByQuery)

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;        


Client client = elasticsearchTemplate.getClient();
UpdateByQueryRequestBuilder builder = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);

builder.source("索引名/索引别名")
        .filter(QueryBuilders.termQuery("属性名", "属性值"))
        .script(new Script("ctx._source.属性名=属性值"));
BulkByScrollResponse response = builder.get();
long count = response.getUpdated();

 

  删除

    //TODO 

  

 

标签:JAVA,Autowired,builder,queryBuilder,private,API,ElasticSearch,elasticsearchTempl
From: https://www.cnblogs.com/july-sunny/p/16640731.html

相关文章

  • Java开发学习(二十八)----拦截器(Interceptor)详细解析
    一、拦截器概念讲解拦截器的概念之前,我们先看一张图:(1)浏览器发送一个请求会先到Tomcat的web服务器(2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态......
  • java学习笔记016 泛型、流
    ######1.泛型Genericsince1.5标示元素类型的参数,泛型不能是基本数据类型泛型不同的引用不能相互赋值静态方法不能使用泛型,因为实例化类的时候要指定泛型,但是静态方......
  • 【Azure API 管理】如何修改Azure APIM的管理员邮箱和组织名称
    问题描述当创建一个新的APIM服务时,会要求输入组织名称(Organizationname)和管理员邮箱(Administratoremail:Setthee-mailaddresstoreceiveallsystemnotificatio......
  • java_4_下载安装配置环境变量
    下载安装:去官网下载所需版本,按照程序引导的步骤安装即可配置环境变量:1.鼠标右击我的电脑>属性>高级系统变量>环境变量2.在环境变量模块新增一个系统变量: 3.在变量Pat......
  • 手机在网状态API推荐
    APISpace的手机在网状态API我在这里推荐给大家,传入手机号码,查询该手机号的在网时长,返回时间区间,支持移动、电信、联通手机号码。应用场景话务中心电话营销。手机号......
  • JAVA知识回顾之Lambda
    0x00概述本文转载 0x01学习Lambda的理由绝大多数公司代码的主流风格。大数据量下处理集合效率高,优秀的高并发解决。代码的可读性增强。消灭嵌套地狱。>形状的i......
  • Java按位操作工具类
    /***Bit转换工具*/@SuppressWarnings({"WeakerAccess","unused"})publicclassConvertBit{/***短整型(int16)数据中包含的有效bit数量*/......
  • 【转】SpringBoot ElasticSearch 各种查询汇总
    原文连接:https://www.cnblogs.com/jelly12345/p/14765477.html 一:文档对象如下@Data@AllArgsConstructor@NoArgsConstructor@Document(indexName="items",type......
  • 好用的日出日落API推荐
    今天给大家推荐一款很不错的API——APISpace的日出日落API,支持国内3400+个城市以及国际4万个城市,获取指定城市/地点每日日出时间、日落时间。 APISpace上面还有很......
  • Java 接口测试利器 REST-assured 快速入门
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取开源简约的接口测试DSL;支持XML、JSON的结构化解析;支持Xpath、JsonPath、gpath等多种......