Как создать составной первичный ключ в моем документе в elasticsearch - PullRequest
0 голосов
/ 28 мая 2020

Я хочу создать первичные ключи, используя имя и ssn.

"hits" : [
  {
    "_index" : "students",
    "_type" : "_doc",
    "_id" : "_prfVnIB9H5oRoSoC",
    "_score" : 1.0,
    "_source" : {
      "name" : Sam,
      "age" : "23",
      "SSN" : "2365PK",
      "Class" : "10",
      "School" : "St jose School "
     }
 ]

Я пробую что-то вроде этого, не думаю, что это правильно:

  PUT students/_doc/_create
   {
     "name" : "ssn"
    }

Вот код, в котором я отправляю данные в elasticsearch:

 String newESURL = esUrl + "/students/_doc";
        int diplayCount = 0;
        for (; rec < Records.size(); rec++) {
            String StudRecord = Obj.writeValueAsString(Records.get(rec));
            String Resp = given().trustStore("keystore/cacerts", "xyz").baseUri(newESURL).contentType("application/json").accept("application/json")
                    .body(StudRecord)
                    .auth().basic(User, Password)
                    .post().then().extract().body().asString();

1 Ответ

1 голос
/ 28 мая 2020

Вот и мы go. Вот модифицированный код, который позволит достичь того, что вам нужно:

String newESURL = esUrl + "/students/_doc/";
    int diplayCount = 0;
    for (; rec < Records.size(); rec++) {
        Record = record = Records.get(rec);
        String StudRecord = Obj.writeValueAsString(record);
        String StudentKey = "TODO";
        String Resp = given().trustStore("keystore/cacerts", "xyz")
                .baseUri(newESURL + StudentKey)
                .contentType("application/json")
                .accept("application/json")
                .body(StudRecord)
                .auth().basic(User, Password)
                .put().then().extract().body().asString();

Там, где вы видите "TODO", вам нужно создать составной ключ, используя поля name и SSN записи, и присоединиться их вместе, например, john-123-456-6789 Таким образом, URL-адрес на самом деле отличается для каждой записи, потому что он содержит идентификатор (т.е. первичный ключ) вашей записи. Это предотвратит дублирование при последующих загрузках.

Также не забудьте использовать put() вместо post()

...