java对api elasticsearch(ES)操作

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: java对api elasticsearch(ES)操作
查看详情
get /person002/_search
查看mappings
get /person002/_mapping
查看所有索引
get _cat/indices
查看100条件记录
GET _search
{
  "query": {
    "match_all": {}
  },
  "from": 0,
  "size":100
}
查看具体_doc_id
get /person002/_doc/8

创建索引

@Test
public void test2() throws IOException {
    //使用client获取操作索引对象
    IndicesClient indices = client.indices();
    //具体操作获取返回值
    //设置名称
    CreateIndexRequest person002 = new CreateIndexRequest("person002");
    CreateIndexResponse createIndexResponse = indices.create(person002, RequestOptions.DEFAULT);
    //返回值判断结果
    boolean acknowledged = createIndexResponse.isAcknowledged();
    System.out.println(acknowledged);
}

查询索引

@Test
public void test3() throws IOException {
    IndicesClient indices = client.indices();
    GetIndexRequest indexRequest = new GetIndexRequest("person002");
    GetIndexResponse response = indices.get(indexRequest, RequestOptions.DEFAULT);
    Map<String, MappingMetaData> mappings = response.getMappings();
    for (String key : mappings.keySet()) {
        System.out.println(key + "=====" + mappings.get(key).getSourceAsMap());
    }
}

添加文档,使用对象作为数据

@Test
public void test4() throws IOException {
    Shop shop = new Shop();
    shop.setId(223L);
    shop.setName("dong");
    shop.setAddress("广东省汕头大学");
    String toJSONString = JSON.toJSONString(shop);
    IndexRequest indexRequest = new IndexRequest("person002")
            .id(String.valueOf(shop.getId())).source(toJSONString, XContentType.JSON);
    IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT);
    System.out.println(JSON.toJSONString(index));
}

根据id查询文档

@Test
public void test5() throws IOException {
    GetRequest indexRequest = new GetRequest("person002", "223");
    GetResponse response = client.get(indexRequest, RequestOptions.DEFAULT);
    System.out.println(response.getSourceAsString());
    System.out.println("==============================");
    System.out.println(JSON.toJSONString(response));;
}

elasticsearch批量操作和导入

/**
 * @author: samxie
 * @create: 2022/6/10
 * @Description:
 * @FileName: ElasticsearchTest
 * @History:
 * @自定义内容:
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticsearchTest {
    @Resource
    private RestHighLevelClient client;
    private final String INDEX = "person002";
    //批量操作
    @Test
    public void test8() throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        DeleteRequest deleteRequest = new DeleteRequest(INDEX, "5");
        bulkRequest.add(deleteRequest);
        Map<String, Object> map = new TreeMap<>();
        map.put("name", "六号");
        IndexRequest indexRequest = new IndexRequest(INDEX).id("6").source(map);
        bulkRequest.add(indexRequest);
        Map<String, Object> mapUpdate = new HashMap<>();
        mapUpdate.put("name", "三号54333333333333333333333333");
        Up dateRequest updateRequest = new UpdateRequest(INDEX, "2").doc(mapUpdate);
        bulkRequest.add(updateRequest);
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(response.status());
        System.out.println("=====" + JSON.toJSONString(response));
    }
    //导入
    @Data
    class Goods {
        private String id = UUID.randomUUID().toString();
        private String name;
        private String specStr;
        private Map spec;
        public Goods(String name, String specStr, Map spec) {
            this.name = name;
            this.specStr = specStr;
            this.spec = spec;
        }
    }
    @Test
    public void test9() throws IOException {
        List<Goods> goodsList = new Vector<>();
        goodsList.add(new Goods("1", null, null));
        goodsList.add(new Goods("2", null, null));
        goodsList.add(new Goods("2dw", null, null));
        goodsList.add(new Goods("2wwd", null, null));
        //bulk import
        BulkRequest bulkRequest = new BulkRequest();
        for (Goods goods : goodsList) {
            String specStr = goods.getSpecStr();
            Map map = JSON.parseObject(specStr, Map.class);
            goods.setSpec(map);
            String toJSONString = JSON.toJSONString(goods);
            IndexRequest indexRequest = new IndexRequest(INDEX).source(toJSONString, XContentType.JSON);
            System.out.println("=======" + JSON.toJSONString(indexRequest));
            bulkRequest.add(indexRequest);
        }
        System.out.println("----" + bulkRequest);
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(response.status());
    }
    @Test
    public void test3() throws IOException {
        SearchRequest searchRequest = new SearchRequest(INDEX);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();
        sourceBuilder.query(queryBuilder);
        searchRequest.source(sourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = searchResponse.getHits();
        long total = hits.getTotalHits().value;
        System.out.println("总数:" + total);
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit searchHit : hits1) {
            String sourceAsString = searchHit.getSourceAsString();
            System.out.println("=====" + sourceAsString);
        }
    }
    //类型:text:会分词;keyword:不会分词,将全部内容作为一个词条,支持聚合
}
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
14天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
44 2
|
3月前
|
缓存 Java 关系型数据库
【Java面试题汇总】ElasticSearch篇(2023版)
倒排索引、MySQL和ES一致性、ES近实时、ES集群的节点、分片、搭建、脑裂、调优。
【Java面试题汇总】ElasticSearch篇(2023版)
|
4月前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
117 0
|
2月前
|
存储 人工智能 自然语言处理
Elasticsearch Inference API增加对阿里云AI的支持
本文将介绍如何在 Elasticsearch 中设置和使用阿里云的文本生成、重排序、稀疏向量和稠密向量服务,提升搜索相关性。
75 14
Elasticsearch Inference API增加对阿里云AI的支持
|
1月前
|
数据可视化 API 索引
ES常见Index API操作最佳实践!
【10月更文挑战第21天】
61 1
ES常见Index API操作最佳实践!
|
29天前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
2月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
33 1
|
3月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
3月前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的探索
【9月更文挑战第24天】本文将深入浅出地介绍Java 8中的重要新特性——Lambda表达式和Stream API,通过实例解析其语法、用法及背后的设计哲学。我们将一探究竟,看看这些新特性如何让Java代码变得更加简洁、易读且富有表现力,同时提升程序的性能和开发效率。
|
3月前
|
Java
flyway报错Caused by: java.lang.NoSuchMethodError: org.flywaydb.core.api.configuration.FluentConfigurat
flyway报错Caused by: java.lang.NoSuchMethodError: org.flywaydb.core.api.configuration.FluentConfigurat
42 2