devspec
@devspec
Помогло? Отметь решением

Почему не получается Bulk Insert в Elastic Search?

Здравствуйте!

Использую Nest для связи с ElasticSearch (Nest взял из репозиториев NuGet). .NET Framework 4, x86. Пытаюсь добавить документ при помощи метода Bulk следующим образом:
namespace NestTestCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        var client = new ElasticsearchClient();


        var p = new Phrase
        {
            Id = 1,
            Name = "скачать1"
        };


       var descriptor = new BulkDescriptor();

        descriptor.Index<Phrase>(op => op
            .Document(p)
        );

        
        var index = client.Bulk("phrases", "phrase", descriptor);

        }
    }

    class Phrase
    {
        public long Id { get; set; }
        public string Name { get; set; }
    }
}


Получаю пустой Request и ответ вида:
{StatusCode: 400, 
	Method: POST, 
	Url: http://localhost:9200/phrases/phrase/_bulk, 
	Request: {}, 
	Response: <Response stream not captured or already read to completion by serializer>
	ExceptionMessage: Validation Failed: 1: no requests added;
	 StackTrace: }


Подскажите, в чем может быть проблема? Код скопирован с официального источника с минимальными изменениями. Крутил его по-всякому, но никак не получается добавить данные пакетно. Данные по одному через client.Index добавляются нормально.

P.S. Пробовал, в том числе, таким способом:
var request = new BulkRequest()
        {
            Refresh = true,
            Consistency = Consistency.One,
            Operations = new List<IBulkOperation>
    {
        { new BulkIndexOperation<Phrase>(p) { Id= "1"} }
   }
        };

        var response = client.Bulk(request);


Выдается ошибка:
Метод может быть вызван только для метода, для которого значение Type.IsGenericParameter является true.
  • Вопрос задан
  • 2904 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы