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

使用springboot插入到elasticsearch数据流时抛出错误“只允许在数据流中使用op_type为create的写操作”

是因为elasticsearch在7.x版本中移除了op_type参数,并且默认只允许使用create操作来插入数据。

在elasticsearch 7.x版本中,插入数据时不再需要指定op_type参数,而是通过请求的方法来确定操作类型。如果要插入新的文档,可以使用PUT请求,如果文档已经存在,则使用POST请求。

解决这个错误的方法是修改代码,将插入数据的请求方法改为PUT或POST,并且不再指定op_type参数。

以下是一个示例代码:

代码语言:txt
复制
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ElasticsearchService {

    @Autowired
    private RestHighLevelClient client;

    public void insertData() {
        IndexRequest request = new IndexRequest("index_name");
        request.id("document_id");
        request.source("{\"field1\":\"value1\",\"field2\":\"value2\"}", XContentType.JSON);

        try {
            IndexResponse response = client.index(request, RequestOptions.DEFAULT);
            System.out.println("插入成功:" + response.getResult().toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,我们使用RestHighLevelClient来与elasticsearch进行交互。通过创建一个IndexRequest对象,并指定索引名称、文档ID和文档内容,然后使用client.index方法来插入数据。

需要注意的是,上述示例中的index_name和document_id需要根据实际情况进行替换。

推荐的腾讯云相关产品是腾讯云的云原生数据库TencentDB for Elasticsearch,它是基于开源的Elasticsearch构建的一种高可用、高性能、弹性伸缩的云数据库产品。您可以通过以下链接了解更多信息:

TencentDB for Elasticsearch产品介绍

希望以上信息对您有所帮助!

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

相关·内容

一日一技:Elasticsearch批量插入时,存在就不插入

摄影:产品经理 买单:kingname 当我们使用 Elasticsearch-py 批量插入数据到 ES 的时候,我们常常使用它的 helpers模块里面的bulk函数。...如果_id 对应的文档已经在 ES 里面了,那么数据会被更新。如果_id 对应的文档不在 ES 中,那么就插入。 如果我想实现,不存在就插入,存在就跳过怎么办?...此时就需要在文档里面添加_op_type指定操作类型为create: from elasticsearch import helpers, Elasticsearch es = Elasticsearch...} } helpers.bulk(es, generator(), index='xxx', doc_type='doc') 此时,如果_id 对应的文档不在 ES 中,那么就会正常插入...doc', raise_on_exception=False, raise_on_error=False) 其中raise_on_exception=False表示在插入数据失败时

5.3K30

Elasticsearch 7.X data stream 深入详解

上述 rollover、ILM 机制实现:都涉及到多索引和别名的关系。 官方强调:别名在 Elasticsearch 中的实现方式存在一些不足(官方没有细说哪些不足。...3.4 Append-only 仅追加 仅追加:指只支持 op_type=create 的索引请求,我理解的是仅支持向后追加(区别于对历史数据的删除、更新操作)。...7.2 不同点 数据流相对实体索引,有点“抽象层“的概念,其核心数据还是存储在 .ds 前缀的后备索引中。 以下操作,只适用于数据流。 数据流对应映射必须包含日期类型的 @timestamp 字段。...ILM 在 data stream 中起到索引生命周期管理的作用。...: 第一:批量 bulk 操作,必须使用:create 指令,而非 index(使用 index 不会报错, 会把流当做索引处理了)。

1.8K60
  • Elasticsearch--数据索引

    通过在所有节点的配置文件中设置action_create_index为false,可以关闭自动索引创建这个功能,默认是打开的 通过在所有节点的配置文件中设置index.mapper.dynamic为false...op_type控制索引操作"缺少即加入",当设置op_type 为create时,如果索引时指定的id已经存在,那么索引操作就会失败 上面的op_type=create与直接使用_create API...自动ID创建: 前面提到创建索引时可以指定ID,也可以不指定ID,如果不指定ID,那么ES会自动的生成一个ID,并且把op_type更改为create。...这种操作仅推荐在特殊情况下使用,如果在大量所以操作中,每个操作都执行refresh,那是很耗费性能的。 这一步是把缓冲区的请求数据刷到文件系统缓存上。...这时,就会出现一定的等待时间,如果超过等地时间则返回并抛出错误,这个等待时间可以通过timeout设置: PUT /my_index/my_type/1?

    1.6K60

    Elasticsearch 之 数据索引

    对于提供全文检索的工具来说,索引时一个关键的过程——只有通过索引操作,才能对数据进行分析存储、创建倒排索引,从而让使用者查询到相关的信息。...通过在配置文件中设置action.auto_create_index为false,可以关闭自动创建index这个功能。...操作类型op_type ES通过参数op_type提供“缺少即加入”的功能,即如果ES中没有该文档,就进行索引;如果有了,则报错返回。...}' 手动刷新 由于ES并不是一个实时索引搜索的框架,因此数据在索引操作后,需要等1秒钟才能搜索到。这里的搜索是指进行检索操作。如果你使用的是get这种API,就是真正的实时操作了。...这种操作仅推荐在特殊情况下使用,如果在大量所以操作中,每个操作都执行refresh,那是很耗费性能的。 Timeout超时 分片并不是随时可用的,当分片进行备份等操作时,是不能进行索引操作的。

    894100

    elasticsearch文档索引API(二)

    " } ' 在这个请求中,op_type会被自动设置为create,执行结果如下: ?...分布式 基于路由机制,索引操作将被定向到主分片上并执行,在主分片完成操作后,如果需要,再将更新操作分发到副本分片上。...在默认情况下,只需要主分片处于活动状态,写操作就会继续,开发者可以通过设置 index.write.wait_for_active_shards来动态地在索引设置中覆盖此默认值。...要只是需要更改每个操作的此行为,则可以使用 wait_for_active_shards请求参数,参数有效值是 all或任何不大于副本分片数的正整数,如果指定负值或者大于副本分片数的数字将抛出错误。...写操作响应的 _shard字段显示复制成功/失败的副本分片的数量。 Noop Updates 当使用索引API更新文档时,即使文档没有更改,也始终创建新版本的文档。

    91830

    【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch

    在 Elasticsearch Sink 中,您需要实现 SinkFunction 接口,以将 Flink 数据流中的数据发送到 Elasticsearch。...在 Elasticsearch Sink 中,BulkProcessor 负责将 Flink 数据流中的数据批量发送到 Elasticsearch。...如果设置为true,则允许在重定向过程中发生循环重定向;如果设置为false,则在检测到循环重定向时,将会抛出异常。...如果设置为true,则允许在重定向过程中发生循环重定向;如果设置为false,则在检测到循环重定向时,将会抛出异常。...如果设置为true,则允许在重定向过程中发生循环重定向;如果设置为false,则在检测到循环重定向时,将会抛出异常。

    1.4K10

    Elasticsearch:REST API

    简介 在 Elasticsearch 中,所以的数据都是以 JSON 的格式来进行表述的。这个和其它的有些数据库,比如 Solr,它支持更多格式的数据,比如 xml, csv 等。...我们可以直接使用如下的命令来进行删除: DELETE twitte 当我们执行完这一条语句后,所有的在 twitter 中的所有的文档都将被删除。...在输入命令时,我们需要特别的注意:千万不要添加除了换行以外的空格,否则会导致错误。在上面我们使用的 index 用来创建一个文档。...等我们运行完上面的指令后,我们可以在 Kibana 中查看到我们的叫做 “bank_account” 的索引。...Open/close Index Elasticsearch 支持索引的在线/离线模式。 使用脱机模式时,在群集上几乎没有任何开销地维护数据。 关闭索引后,将阻止读/写操作。

    1.3K00

    ElasticSearch权威指南学习(文档)

    op_type=create { ... } 第二种方法是在URL后加/_create做为端点: PUT /website/blog/123/_create { ... } 请求成功响应状态码是201...合并多个请求可以避免每个请求单独的网络开销。如果你需要从Elasticsearch中检索多个文档,相对于一个一个的检索,更快的方式是在一个请求中使用multi-get或者mget API。...每个文档的检索和报告都是独立的 更新时的批量操作 就像mget允许我们一次性检索多个文档一样,bulk API允许我们使用单一请求来实现多个文档的create、index、update或delete。...这对索引类似于日志活动这样的数据流非常有用,它们可以以成百上千的数据为一个批次按序进行索引。...如果任何一个请求失败,顶层的error标记将被设置为true,然后错误的细节将在相应的请求中被报告 演示错误情况 POST /_bulk { "create": { "_index": "website

    97430

    elasticsearch文档索引API(一)

    ,这个数组是在副本分片上索引操作失败的情况下相关错误的数组 在索引操作成功的情况下,successful至少为1。...这是来自官网的介绍,但是在实际操作中,如果这样配置会抛出如下异常信息: java.lang.IllegalArgumentException: the [action.auto_create_index...小伙伴们应该知道,数据库锁有悲观锁和乐观锁之分: 悲观锁,顾名思义就是很悲观,每次操作数据时都认为数据也会被其他线程修改,因此屏蔽一切有可能破坏数据完整性的操作,在传统的关系型数据库中,常见的行锁、表锁...乐观锁,顾名思义就是很乐观,认为每一次的数据操作都不会发生并发访问冲突,因此不会锁定要操作的数据资源,只是在每次提交时检查操作是否违反了数据完整性,Elasticsearch中就是采用了这种锁机制,使用乐观锁的一个好处是可以提高系统的吞吐量...Elasticsearch作为一个分布式系统,在elasticsearch文档读写模型一文中,我们已经向读者介绍了Elasticsearch的读/写模型,读者已经了解到,一个操作在主分片执行完成后,会被转发到其他副本分片上去执行

    2.3K40

    Flink 非确定性更新(NDU)问题探索和规避

    例如用户在定义源表时,某个虚拟列字段调用了 RAND()、NOW()、UUID() 等函数;那么每次作业崩溃后重新运行,即使输入的数据流完全一致,输出结果也未必相同。...此外,如果用户使用维表 JOIN,而外部维表随时在更新时,每次 JOIN 的结果也可能不同。...例如我们有如下的 MySQL CDC 数据源表,其中 op_type 是虚拟列,表示从 Debezium 的元数据里读取本条记录的类型:CREATE TABLE my_cdc_source (       ...因此,在 Flink 的 1.16 版本中,社区特意对非确定性更新(Non-Deterministic Update,下文简称 NDU)问题做了系统性梳理(见 FLINK-27849),并提供了初步的应对方案...总结Flink 社区在 1.16 版本中,对 NDU 问题做了初步的检测和修复尝试(为了保证兼容性,需要手动开启),目前已经可以识别和处理多数的问题场景,更多案例详见官方文档 流上的确定性。

    2.7K30

    Elastic Stack 实战教程 3:快照备份与恢复

    快照有以下使用场景: 数据灾备:当发生误删索引数据的情况时,可以使用快照来还原;在主集群无法正常工作时,可以使用快照在备集群上恢复数据。...Kibana 提供了可视化的操作界面,方便用户与 Elasticsearch 进行交互。 首先执行以下命令修改系统参数以满足 Elasticsearch 的运行条件。...设置存储桶的名字为 es-snapshot,点击 Create Bucket。...docker exec -it 3snapshot_es01_1 bash 连接对象存储的凭证存储在 Elasticsearch 的 keystore 中,使用以下命令在 keystore 中添加存储库访问凭证...在创建完成后也以使用 verify snapshot repository API 验证存储库的连接情况,如果验证成功,该请求将返回用于验证存储库的节点列表;如果验证失败,则返回错误信息。

    1.5K30

    重学SpringBoot3-Spring WebFlux之Reactor事件感知 API

    它们不会改变流的内容或数据流本身,而是允许我们在特定的生命周期事件发生时进行操作(如日志记录、调试、监控等)。...这些 API 名称中的 Xxx 代表不同的事件类型,比如: doOnNext(): 当下一个元素被发出时执行操作。 doOnError(): 当流中出现错误时执行操作。...Flux 被用来创建一个数据流,并且在这个数据流中执行了一些操作,包括可能抛出异常的操作。...错误处理:使用 doOnError() 可以在发生错误时记录日志、发送通知或者做出其他相应的处理。 4....它们的主要作用是让开发者能够在不干扰流式数据处理的情况下,插入额外的操作,如调试、监控、资源清理等。

    18821

    读Hadoop3.2源码,深入了解java调用HDFS的常用操作和HDFS原理

    (new Path(resourceName), count); 二、深入了解HDFS写文件的流程和HDFS原理 文件操作的方法比较多,本期我们以create方法为例,来通过阅读源码深入了解下hdfs写文件的流程和原理...如果一个1MB的文件存储在一个128M的块中时,文件实际只是用了1M的磁盘空间,而不是128M。...过期的租约会导致租约持有者无法继续执行写数据到文件中,除非进行租约的更新。 既然每个客户端都有一个文件租约,那么HDFS如如何管理的呢?比如有些客户端用户写某文件后未及时关闭此文件。...[在这里插入图片描述] 1、创建文件 HDFS客户端写一个新的文件时,会首先调用DistributedFileSystem.create()方法在HDFS文件系统中创建一个新的空文件。...这个方法在底层会通过调用ClientProtocol.create()方法通知Namenode执行对应的操作,Namenode会首先在文件系统目录树中的指定路径下添加一个新的文件,然后将创建新文件的操作记录到

    1.2K32

    「Elasticsearch」ES重建索引怎么才能做到数据无缝迁移呢?

    背景 众所周知,Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务。...参数 op_type 参数控制着写入数据的冲突处理方式,如果把 op_type 设置为 create【默认值】,在 _reindex API 中,表示写入时只在 dest index中添加不存在的 doucment...,如果相同的 document 已经存在,则会报 version confilct 的错误,那么索引操作就会失败。...": "blog_lastest", "op_type": "create" } } 如果这样设置了,也就不存在更新数据的场景了【冲突数据无法写入】,我们也可以把 op_type 设置为 index...": "create" }, "conflicts": "proceed" } 我们可以故意把 op_type 设置为 create,人为制造数据冲突的场景,测试时更容易观察到冲突现象。

    5.5K10

    开始使用 Elasticsearch (1)

    3.jpg 当我们执行命令时,我们必须点击左边窗口里的那个绿色的播放按钮。命令所执行显示的结果将在右边展示。在接下的所有练习中,我们都将使用这样的操作来进行。  ...使用一个命令同时获取 id 为 1 及 2 的文档。 在上面当我们写入数据时,我们有意识地把文档的 id 在命令中写了出来。...在输入命令时,我们需要特别的注意:千万不要添加除了换行以外的空格,否则会导致错误。在上面我们使用的 index 用来创建一个文档。为了说明问题的方便,我们在每一个文档里,特别指定了每个文档的 id 。...bulk 指令是高效的,因为一个请求就可以处理很多个操作。在实际的使用中,我们必须注意的是:一个好的起点是批量处理 1000 到 5,000 个文档,总有效负载在 5MB 到 15MB 之间。...29.jpg Open/close Index Elasticsearch 支持索引的在线/离线模式。 使用脱机模式时,在群集上几乎没有任何开销地维护数据。 关闭索引后,将阻止读/写操作。

    1.3K70

    【Elastic】ES重建索引怎么才能做到数据无缝迁移呢?

    背景 众所周知,Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务。...参数 op_type 参数控制着写入数据的冲突处理方式,如果把 op_type 设置为 create【默认值】,在 _reindex API 中,表示写入时只在 dest index中添加不存在的 doucment...,如果相同的 document 已经存在,则会报 version confilct 的错误,那么索引操作就会失败。...": "blog_lastest", "op_type": "create" } } 如果这样设置了,也就不存在更新数据的场景了【冲突数据无法写入】,我们也可以把 op_type 设置为...": "create" }, "conflicts": "proceed" } 我们可以故意把 op_type 设置为 create,人为制造数据冲突的场景,测试时更容易观察到冲突现象。

    1.1K21

    springboot整合elasticsearch7.2(基于官方high level client)

    前言 最近写的一个个人项目(传送门:全终端云书签)中需要用到全文检索功能,目前 mysql,es 都可以做全文检索,mysql 胜在配置方便很快就能搞定上线(参考这里),不考虑上手难度,es 在全文检索方面是完胜...在 7.x 中已经被弃用,8.x 中将完全删除 high level client 的官方文档写的很清楚明了,虽然目前相关的中文资料还很少,也能够上手用起来 本文主要内容如下: docker 部署 es...(支持 ik 中文分词) 在 springboot 中进行增删改查 docker 部署 es(基于 linux) es 的中文分词目前比较流行的分词插件为 ik(github 地址)。...假定当前在/root 目录下 下载 ik release 到/root/es/ik 目录下,并解压到当前文件夹。...如果定义了,就必须在中指定部分依赖的版本,否则会因为依赖版本不对出现各种莫名其妙的错误,上面注释中已经指出。

    4K30

    Elasticsearch遇上BERT:使用Elasticsearch和BERT构建搜索引擎

    在这篇文章中,我们使用一个预先训练好的BERT模型和Elasticsearch来构建一个搜索引擎。Elasticsearch最近发布了带有矢量字段的文本相似性搜索。...另一方面,你可以使用BERT将文本转换为固定长度的向量。一旦我们通过BERT将文档转换成向量并存储到Elasticsearch中,我们就可以使用Elasticsearch和BERT搜索类似的文档。...设置环境变量 你需要设置一个预先训练好的BERT模型和Elasticsearch的索引名作为环境变量。这些变量在Docker容器中使用。下面的示例将jobsearch指定为索引名,以及....创建Elasticsearch索引 您可以使用create index API向Elasticsearch集群添加新的索引。...这里的要点是使用BERT将文档转换为向量。得到的向量存储在text_vector字段中。

    2.4K20
    领券