有人可以解释Elasticsearch的{{3}}和IndexRequest之间的区别吗? UpdateRequest(类级别)的javadoc为空,我找不到任何文档。
我发现一些代码在将IndexRequest
包装到UpdateRequest
之前将其添加到批量操作中,但我发现BulkRequestBuilder
不需要UpdateRequest
和可以直接拿IndexRequest
,这样或那样做有什么好处吗?
IndexRequest indexRequest = new IndexRequest(indexName, typeName, docId)
.source(doc);
UpdateRequest updateRequest = new UpdateRequest(indexName, typeName, docId)
.doc(doc)
.upsert(indexRequest);
我还观察到您可以在IndexRequest
上设置文档时间戳,但不能在UpdateRequest
上设置。如果IndexRequest
包含在UpdateRequest
中,并且文档是新文档,则时间戳将写入Elasticsearch,但如果文档已存在,则时间戳将被忽略,并且设置为当前时间。是否有任何描述此行为的文档?
答案 0 :(得分:0)
IndexRequest
定义了要添加到ElasticSearch中的文档,而不是UpdateRequest
实际执行添加到ElasticSearch中。
注意:UpdateRequest.upsert()
期望即使文档不存在也要使用单独的IndexRequest
。这样,您就可以在文档已经存在的情况下使用部分文档。