elasticsearch在使用bulkallobserver时插入重复项

juud5qan  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(222)

我有这个问题,我试图批量索引到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 以下是两种方法,区别在于 SubscribeBulkAllObservable ```
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",
}
};

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题