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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2
|
4月前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
13天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
11天前
|
存储 缓存 监控
极致 ElasticSearch 调优,让你的ES 狂飙100倍!
尼恩分享了一篇关于提升Elasticsearch集群的整体性能和稳定性措施的文章。他从硬件、系统、JVM、集群、索引和查询等多个层面对ES的性能优化进行分析,帮助读者提升技术水平。
|
20天前
|
存储 人工智能 API
(Elasticsearch)使用阿里云 infererence API 及 semantic text 进行向量搜索
本文展示了如何使用阿里云 infererence API 及 semantic text 进行向量搜索。
|
27天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
57 10
|
1月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
3月前
|
存储 人工智能 自然语言处理
Elasticsearch Inference API增加对阿里云AI的支持
本文将介绍如何在 Elasticsearch 中设置和使用阿里云的文本生成、重排序、稀疏向量和稠密向量服务,提升搜索相关性。
104 14
Elasticsearch Inference API增加对阿里云AI的支持
|
2月前
|
数据可视化 API 索引
ES常见Index API操作最佳实践!
【10月更文挑战第21天】
119 1
ES常见Index API操作最佳实践!
|
2月前
|
监控 API 索引
Elasticsearch集群使用 _cluster/health API
Elasticsearch集群使用 _cluster/health API
66 2