我有一个文档数组来批量索引使用 github.com/elastic/go-elasticsearch/v8 库。
每个文档都可以添加到少数几个不同索引之一,因此我的代码如下所示:
var indexers map[string]esutil.BulkIndexer = make(map[string]esutil.BulkIndexer)
for i := range documents {
var bi esutil.BulkIndexer
var ok bool
var err error
if bi, ok = indexers[documents[i].index]; !ok {
bi, err = esutil.NewBulkIndexer(esutil.BulkIndexerConfig{
Index: documents[i].index, // The index name
Client: client, // The Elasticsearch client* Same isntance for all indexers*
NumWorkers: BULK_NUM_WORKERS, // The number of worker goroutines
FlushBytes: int(BULK_FLUSHBYTES), // The flush threshold in bytes
FlushInterval: 5 * time.Second, // The periodic flush interval
})
if err != nil {
fmt.Printf("Error creating the indexer: %s", err)
continue
}
indexers[documents[i].indexName] = bi
}
这个想法是我有一个地图,它们都共享相同的实例。所以我的问题是,几个人共享相同的实例是否可行且安全,或者它们各自需要一个单独的实例?esutil.BulkIndexerelasticsearch.Clientesutil.BulkIndexerelasticsearch.Clientelasticsearch.Client
桃花长相依
相关分类