在Elasticsearch中批量插入对象

新学习者

我正在尝试创建索引,然后使用RestHighLevelClientES进行批量插入(代码在Kotlin中)。

批量插入代码为:

private fun insertEntity(entityList: List<Person>, indexName: String) {
    var count = 0
    val bulkRequest = BulkRequest()

    entityList.forEach {
        bulkRequest.add(IndexRequest(indexName).source(it,XContentType.JSON))
        count++

        if (count == batchSize) {
            performBulkInsert(bulkRequest)
        }
    }
}

执行此操作时,出现异常提示: Limit of 1000 fields is crossed.

在分析我的代码时,我觉得实现是错误的,因为:

bulkRequest.add(IndexRequest(indexName).source(it,XContentType.JSON))

source采用String类型,但我正在传递Person (it)对象本身。因此,我认为这基于我的映射或其他原因导致了与1000个字段相关的问题。

不知道我的假设是否正确。如果是,我该如何实现批量插入?

编辑

索引创建:

private fun createIndex(indexName: String) {
    val request = CreateIndexRequest(indexName)

    val settings = FileUtils.readFileToString(
        ResourceUtils.getFile(
            ResourceUtils.CLASSPATH_URL_PREFIX + "settings/settings.json"), "UTF-8")

    val mappings = FileUtils.readFileToString(
        ResourceUtils.getFile(
            ResourceUtils.CLASSPATH_URL_PREFIX + "mappings/personMapping.json"), "UTF-8")

    request.settings(Settings
        .builder()
        .loadFromSource(settings, XContentType.JSON))
        .source(mappings, XContentType.JSON)
    restHighLevelClient.indices().create(request, RequestOptions.DEFAULT)
    
}

Mapping.json请注意原始文件有16个字段。

{
  "properties": {
    "accessible": {
      "type": "boolean"
    },
    "person_id": {
      "type": "long"
    },
    "person_name": {
      "type": "string",
      "analyzer": "lower_keyword"
    }
}
}

谢谢。

Elasticsearch忍者

看起来您正在使用动态映射,并且由于在对文档建立索引时由于某些错误而导致最终在索引中创建了超出1000字段限制的新字段

请查看您是否可以使用静态映射或调试准备文档的代码,并将其与映射进行比较以查看其是否创建了新字段。

请参考SO答案以提高限制(如果其合法),或者使用静态映射或调试代码以弄清楚为什么要向Elasticsearch索引添加新字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ElasticSearch批量插入/更新操作

来自分类Dev

使用NEST批量插入ElasticSearch

来自分类Dev

将JSON对象作为文档批量加载到Elasticsearch中

来自分类Dev

在RavenDB中批量插入

来自分类Dev

如何在elasticsearch中插入对象数组

来自分类Dev

如何使用NEST elasticsearch批量插入Json?

来自分类Dev

如何使用NEST elasticsearch批量插入Json?

来自分类Dev

elasticsearch.js批量插入错误

来自分类Dev

问题批量插入elasticsearch curl powershell

来自分类Dev

AWS Elasticsearch 批量插入延迟大幅增加

来自分类Dev

在MongoDB中批量插入GridFS

来自分类Dev

将文档批量插入文档到ElasticSearch中而无需更新

来自分类Dev

如何使用cqlengine在cassandra中批量插入/批量插入?

来自分类Dev

批量插入仍视为对象的数组NOT DUPLICATE

来自分类Dev

使用QueryCommand对象进行批量插入

来自分类Dev

批量插入图像作为文件对象

来自分类Dev

使用Elasticsearch.net或PlainElastic.net批量插入Elasticsearch

来自分类Dev

在存储过程中的批量/批量插入中绑定参数

来自分类Dev

Scrapy管道中的批量/批量SQL插入[PostgreSQL]

来自分类Dev

在ElasticSearch批量上传中,如何用单引号插入数据?

来自分类Dev

C#中的SQL批量复制/插入

来自分类Dev

尝试在批量插入中未捕获错误

来自分类Dev

在MongoDB中批量插入原子吗

来自分类Dev

如何在Oracle中批量插入

来自分类Dev

EF ObjectContext中的批量插入性能问题

来自分类Dev

Chrome的SQLITE中的批量插入语句

来自分类Dev

尝试在批量插入中未捕获错误

来自分类Dev

如何在MySQL中批量插入记录?

来自分类Dev

.NET / EF Core中的批量插入优化