• elasticsearch java api


    依赖

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>6.8.1</version>
    </dependency>

    一、连接

    // 设置集群名字
    Settings settings = Settings.builder().put("cluster.name", "elasticsearch-6.2.3-local").build();
    // 获取连接
    TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
    
    // 关闭连接
    client.close();

    二、索引

    // 创建索引
    client.admin().indices().prepareCreate("user").execute().actionGet();
    // 删除索引
    client.admin().indices().prepareDelete("user").get();

    三、查询

    // 构建查询条件
    QueryBuilder match = QueryBuilders.matchQuery("sex", "男");
    // 根据查询条件构建查询语句
    SearchRequestBuilder search = client.prepareSearch("user")
            .setQuery(match)
            .setTypes("user") // 指定类型,可选
            .setFrom(0 * 100).setSize(100) // 分页,可选
            .addSort("age", SortOrder.DESC); // 排序,可选
    // 获取搜索结果
    SearchResponse response = search.get();
    // 命中的文档
    SearchHits hits = response.getHits();
    System.out.println("当前索引总数:" + hits.getTotalHits());
    System.out.println("查询结果总数:" + hits.getHits().length);
    
    for (SearchHit hit : hits.getHits()) {
        System.out.println("文档元数据 JSON:" + hit.getIndex());
        System.out.println("文档元数据 Map:" + hit.getSourceAsMap());
    }
    
    
    // 单条记录查询
    GetResponse documentFields = client.prepareGet("user", "user", "10086").execute().actionGet();
    documentFields.getSourceAsMap();

    四、插入

    // 单条插入
    Map<String, Object> userMap = new HashMap<>();
    userMap.put("age", "18");
    client.prepareIndex("user", "user", "10086").setSource(userMap).execute().actionGet();
    
    // 批量插入
    BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
    for (Map<String, Object> map : list) {
        bulkRequestBuilder.add(yofc.prepareIndex("user", "user", map.get("id").toString()).setSource(map));
    }
    bulkRequestBuilder.execute().actionGet();
    
    // 批量插入
    BulkProcessor bulkProcessor = BulkProcessor.builder(
            client,
            new BulkProcessor.Listener() {
                @Override
                public void beforeBulk(long l, BulkRequest bulkRequest) {
                    System.out.println("插入" + bulkRequest.numberOfActions() + "条数据开始");
                }
    
                @Override
                public void afterBulk(long l, BulkRequest bulkRequest, BulkResponse bulkResponse) {
                    System.out.println("插入" + bulkRequest.numberOfActions() + "条数据成功");
                }
    
                @Override
                public void afterBulk(long l, BulkRequest bulkRequest, Throwable throwable) {
                    System.out.println("插入" + bulkRequest.numberOfActions() + "条数据失败");
                }
            })
            .setBulkActions(1000)
            .setBulkSize(new ByteSizeValue(100, ByteSizeUnit.MB))
            .setFlushInterval(TimeValue.timeValueSeconds(5))
            .setConcurrentRequests(1)
            .build();
    for (Map<String, Object> map : list) {
        bulkProcessor.add(new IndexRequest("user", "user", map.get("id").toString()).source(map));
    }
    bulkProcessor.flush();
    bulkProcessor.close();

    https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.8/index.html

    https://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

  • 相关阅读:
    Rio手把手教学:如何打造容器化应用程序的一站式部署体验
    OCR技术浅探: 语言模型和综合评估(4)
    OCR技术浅探: 光学识别(3)
    OCR技术浅探 : 文字定位和文本切割(2)
    OCR技术浅探:特征提取(1)
    .NET加密方式解析--散列加密
    在Windows上搭建Git Server
    感知机
    企业级负载平衡概述
    Logistic Regression 模型
  • 原文地址:https://www.cnblogs.com/jhxxb/p/11321337.html
Copyright © 2020-2023  润新知