Как я могу написать dsl-запрос внутри Nest-запроса с C# для полей обновления, указанных c полей? - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь обновить поля моего индекса с помощью CId; CId можно использовать во многих строках. Моя структура, например:

{
   AId: 4244,
   BId : 53535,
   CId: "4242342"
}

Если вы посмотрите на приведенный ниже запрос о том, чего я намерен достичь, он вернет мне результат, который я желаю.

POST usereventsreduced-*/_update_by_query
{
  "script": {
    "source": "ctx._source.AId = 1;",
    "lang": "painless"
  },
  "query": {
    "match": {
      "CId": "b60d505f-baf6-4522-b2a3-659509435c29"
    }
  }
}

Но я хочу использовать вышеуказанный запрос в C# с помощью Nest. если вы посмотрите на мой код ниже, вы поймете, что я имею в виду. Но это не сработало. Гнездо действительно сложно и не легко понять. как я могу выполнить этот запрос, написав Nest - C#?


 foreach (var pageview in pageviews)
           {

               var updateResponse = client.Update<object>("CId:${pageview.CId}", u => u
   .Index(indexName)
   .Script(s => s.Source("ctx._source.AId = params.AId")
       .Lang("painless")
       .Params(d => d
           .Add("AId", pageview.AId)
       )
   )
);
               Console.WriteLine(updateResponse.Result.ToString());
           }

ВЫ ДОЛЖНЫ БЫТЬ ОСТОРОЖНЫ!

создать класс нелегко. Пожалуйста, не делай этого. Поскольку мой индексный фид из очень динамичных c полей, MyClass может иметь 50 файловых полей 1, а затем 65 файлов. На самом деле я не хочу использовать создание класса (AId, BId, CId, DId ... et c.), Потому что мои поля являются динамическими. Спасибо за вашу помощь

...