我有这个问题,我试图批量索引到elasticsearch 7.9.0使用BulkAlloObservable,但是如果我订阅BulkAlloObserver,以了解我的索引是如何进行的,我会在kibana事件中得到重复的条目,尽管我试图索引的列表中只有一个条目
这些条目是重复的,对于datetime来说甚至低至毫秒,但是\u id是不同的。
如果我自己设置id,那么只有一个条目被编入索引,但是这不需要,因为我的列表中只有一个条目。
如果我没有将bulkallobserver订阅到bulkallobservable,那么只会再次索引一个条目。
我这里有一个工作样本:
https://github.com/jannichibsen/elasticsearch-double-insert
使用docker compose使elastic和kibana启动并运行。试着运行
ProcessPriceListAsyncInsertsCorrect ProcessPriceListAsyncInsertsDouble
以下是两种方法,区别在于 Subscribe
上 BulkAllObservable
```
public static Task ProcessPriceListAsyncInsertsDouble(ElasticClient client, IEnumerable prices)
{
BulkAllObservable bulkAllObservable = CreateBulkAllObservable(client, prices);
bulkAllObservable.Subscribe(new BulkAllObserver(
onNext: response => Console.WriteLine("Starting next batch"),
onError: Console.WriteLine,
onCompleted: () => Console.WriteLine("DONE!")
));
bulkAllObservable.Wait(TimeSpan.FromMinutes(60), null);
return Task.CompletedTask;
}
public static Task ProcessPriceListAsyncInsertsCorrect(ElasticClient client, IEnumerable<PriceItem> prices)
{
BulkAllObservable<PriceItem> bulkAllObservable = CreateBulkAllObservable(client, prices);
bulkAllObservable.Wait(TimeSpan.FromMinutes(60), null);
return Task.CompletedTask;
}
我要插入的项目是
var list = new List()
{
new PriceItem()
{
Amount = 0,
FromDate = DateTime.Now,
ToDate = DateTime.Now.AddDays(2),
Key = "key",
}
};
暂无答案!
目前还没有任何答案,快来回答吧!