0

ElasticSearch を使用してデータのインデックスを作成しましたが、特定のフィールドの更新に問題があります。JSON のスニペットは次のとおりです。

 {
 "_index": "indexName",
 "_type": "type",
 "_id": "00001",
 "colors": [
     "red",
     "green"
 ]
 "place": "london",
 "person": [
      {
           "name": "john",
           "age": "27",
           "eyes": "blue"
      }
      {
           "name": "mary",
           "age": "19",
           "eyes": "green"
      }

 ]
 }

person次のような新しいオブジェクトを追加する必要があります。

{
    "name": "jane",
    "age": "30",
    "eyes": "grey"
}

次のようにPeople定義しています。

public class People
{
    public List<string> colors {get; set; }
    public string place {get; set; }
    public List<Person> person {get; set; }
}
public class Person
{
    public string name {get; set; }
    public string age {get; set; }
    public string eyes {get; set; }
}

color次のようにして、問題なく更新しました。

client.Update<People>(u => u
    .Id(u.Id)
    .Index(u.Index)
    .Type(u.Type)
    .Script("if ctx._source.containsKey(\"color\")) { ctx._source.color += color; } else { ctx._source.color = [color] }")
    .Params(p => p
        .Add("color", "pink"))
);

ただし、フィールドは文字列のリストではなくオブジェクトpersonのリストであるため、フィールドを更新する方法がわかりません。Person

どんな助けでも大歓迎です!

4

1 に答える 1