首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Elasticsearch 6.4:传递给request.mapping()时XContentBuilder无法关闭

Elasticsearch是一个开源的分布式搜索和分析引擎,用于处理大规模数据的实时搜索和分析。它是基于Apache Lucene构建的,提供了一个分布式的、多租户的全文搜索引擎。

在Elasticsearch 6.4版本中,当将XContentBuilder对象传递给request.mapping()方法时,可能会遇到无法关闭XContentBuilder的问题。XContentBuilder是Elasticsearch提供的一个用于构建JSON文档的辅助类,它可以帮助我们以流式的方式构建复杂的JSON结构。

解决这个问题的方法是,在使用完XContentBuilder后,手动调用其close()方法来关闭它。关闭XContentBuilder可以释放资源并确保数据的正确性。

以下是一个示例代码,展示了如何正确地关闭XContentBuilder:

代码语言:txt
复制
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;

public class ElasticsearchExample {
    public static void main(String[] args) {
        try (RestHighLevelClient client = new RestHighLevelClient()) {
            XContentBuilder mappingBuilder = XContentFactory.jsonBuilder();
            mappingBuilder.startObject();
            // 构建mapping
            // ...
            mappingBuilder.endObject();

            CreateIndexRequest request = new CreateIndexRequest("index_name");
            request.mapping(mappingBuilder);

            // 执行请求
            // ...

            // 关闭XContentBuilder
            mappingBuilder.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,我们使用try-with-resources语句来自动关闭RestHighLevelClient,确保资源的正确释放。同时,在代码的最后,我们手动调用mappingBuilder.close()方法来关闭XContentBuilder。

关于Elasticsearch的更多信息,你可以参考腾讯云的Elasticsearch产品介绍页面:腾讯云Elasticsearch。腾讯云提供了Elasticsearch的托管服务,可以帮助用户快速搭建和管理Elasticsearch集群。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 10、使用Java High Level REST Client操作elasticsearch

    Elasticsearch删除和更新也都是写操作。但是Elasticsearch中的文档是不可变的,因此不能被删除或者改动以展示其变更。那么该如何删除和更新文档呢?...当段合并,在.del文件中被标记为删除的文档将不会被写入新段。 接下来我们看更新是如何工作的。在新的文档被创建Elasticsearch会为该文档指定一个版本号。...当执行更新,旧版本的文档在.del文件中被标记为删除,新版本的文档被索引到一个新段。旧版本的文档依然能匹配查询,但是会在结果中被过滤掉。...物理删除索引:当索引数据不断增长,对应的segment也会不断的增多,查询性能可能就会下降。...引发的异常以参数方式提供 // } // }; // //异步执行获取索引请求需要将UpdateRequest 实例和ActionListener实例传递给异步方法

    85630

    使用 Java 客户端添加 ElasticSearch 文档

    松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程 ---- 今天我们来继续看 ElasticSearch 的 Java 客户端操作.../id ,也可以不指定 id,相当于 post book/_doc // request.id("1"); //构建索引文本,有三种方式:JSON 字符串、Map 对象、XContentBuilder...由于我只有三个节点,但是在创建索引,设置需要三个副本,此时的节点就不够用: PUT book { "settings": { "number_of_replicas": 3, "number_of_shards...构建索引信息,有三种方式: //构建索引文本,有三种方式:JSON 字符串、Map 对象、XContentBuilder //request.source("{\"name\": \"三国演义\",\"...": \"罗贯中\"}", XContentType.JSON); //Map map = new HashMap(); //map.put("name", "水浒"

    1.7K10

    Elasticsearch之索引管理API(Index management)

    indices Exists Index 判断索引是否存在 Open/Close Index 打开或关闭索引,使用close index api会使索引处于关闭状态,此时无法对该索引进行读、写,但索引数据不会被删除...请详细参考如下博文: 代码@2:定义映射,有点类似于关系型数据库中的定义表结构,详情请参考:Elasticsearch Mapping parameters(主要参数一览)、Elasticsearch...CreateIndexRequest request = new CreateIndexRequest("suggest_mapping_001"); 5 XContentBuilder...代码@2:设置该索引数据只读,无法再添加新的索引数据,但可以改变索引元数据。...alias指向多个索引 一个别名指向多个索引,其中一个会通过is_write_index =true来表示写索引。

    3K30

    ElasticSearch从入门到精通

    集成的使用 1>.上述查询存在的问题(使用的是默认的分词器) 在进行字符串查询,我们发现去搜索"搜索服务器"和"钢索"都可以搜索到数据而在进行词条查询的时候,我们搜索"搜索"却没有得到数据原因就是...position": 2 } } 7.IK分词器和ElisticSearch的集成 1>.测试分词器 在添加文档时会进行分词,索引中存放的就是一个一个的词(term),当你去搜索就是拿关键字去匹配词...//3.使用Client对象创建一个索引库 client.admin().indices().prepareCreate("es_hello").get(); //4.关闭...xContentBuilder= XContentFactory.jsonBuilder()....).get(); //5).关闭Client对象 transportClient.close(); } 3>使用Java客户端向索引库中添加文档(XContentBuilder

    76210

    Elasticsearch Mapping parameters(主要参数一览)

    Elasticsearch在创建类型映射可以指定映射参数,下面将一一进行介绍。 analyzer 指定分词器。...注意:不建议在创建索引映射使用boost属性,而是在查询通过boost参数指定。其主要原因如下: 无法动态修改字段中定义的boost值,除非使用reindex命令重建索引。...CreateIndexRequest request = new CreateIndexRequest("mapping_test_ignore_above2"); 5 XContentBuilder...能匹配上文档,如果position_increment_gap=10,则无法匹配到文档,因为abraham与lincoln的位置相差10,如果要能匹配到该文档,需要在查询设置slop=10,该参数在前面的...stored_fields只支持字段的store定义为ture,该部分内容已经在Elasticsearch Doc api,_souce过滤部分详细介绍过,这里不过多介绍。

    2.5K30

    ElasticSearch高版本API的使用姿势

    添加依赖需要排除elasticsearchelasticsearch-rest-client包的依赖,因为默认是依赖低版本的,这里有个坑。...return new RestHighLevelClient(restClientBuilder); } } 如果是集群,自己改下就好了,RestClient的builder方法是支持多个...为了方便,我将在创建索引的动作写在代码中,当判断环境为dev环境,删除索引重建。因此,我也封装了创建索引的逻辑。 首先是定义一个注解,用于注释在实体类的字段上,用于创建索引构造mapping。...// 副本数 .put("index.number_of_replicas", replicas)); // 指定mappings request.mapping...但是要注意,批量插入数据,不要产生太多的中间对象,造成内存空间浪费。比如从数据库查询出来的结果转成中间对象,又转成Map对象再插入ES。

    2.1K30

    大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    运行一个 Java 应用程序和 Elasticsearch ,有两种操作模式可供使用。该应用程序可在 Elasticsearch 集群中扮演更加主动或更加被动的角色。...建立文档对象,如果索引不存在的,默认会自动创建,映射采用默认方式 。...建立文档对象,如果索引不存在的,默认会自动创建,映射采用默认方式。...public void createIndexByBuilder() throws Exception {         // 1、通过 es 自带的帮助类,来构建 json 数据         XContentBuilder...    }     @Test     public void createMapping() throws Exception {         // 1、设置 mapping         XContentBuilder

    2.2K22
    领券