Ini kode saya untuk mengirim daftar:

for (int i = 0; i < list.size(); i++) {
        request.add(new IndexRequest("myindex", "doc").source(list,XContentType.JSON));
        count++;
        }

Saya mencoba mengonversi daftar dalam bentuk peta juga tetapi itu membuat indeks dan memukul beberapa kali tetapi tidak mendorong data apa pun:

for (int i = 0; i < list.size(); i++) {
        JSONObject dataAsJson = new JSONObject(list);
        HashMap<String, Object> dataAsMap = new HashMap<String, Object>(dataAsJson.toMap()); 
        request.add(new IndexRequest("myindex", "doc").source(dataAsMap,XContentType.JSON));
        }

Berikut adalah contoh data yang saya coba muat:

           [{"Name" : "ABC",
          "Class" : "six",                                                    
          "Roll" : "330344953  ",
          "Team" : "XYX"
          },
           {"Name" : "AEBC",
          "Class" : "six",                                                    
          "Roll" : "3344953  ",
          "Team" : "XYZ"
          }]
0
aka_code 15 Mei 2020, 17:19

1 menjawab

Jawaban Terbaik

Dengan asumsi pembuatan indeks Anda berhasil, ini adalah bagaimana Anda dapat memposting data yang ada dalam daftar.

Jadi, saya telah membuat list sebagai :

List<Test> list = new ArrayList<Test>();

Test first = new Test();
first.setName("ABC");
first.setClassname("six");
first.setRoll(1);
first.setTeam("XYZ");

Test sec = new Test();
sec.setName("ABCDE");
sec.setClassname("tenth");
sec.setRoll(2);
sec.setTeam("XYZ");

list.add(first);
list.add(sec);

Test memiliki struktur objek yang sama dengan yang Anda sebutkan:

class Test {

    private String name;
    private String classname;
    private int roll;
    private String team;
}

Ini adalah bagaimana Anda dapat menggunakan list ini untuk mengindeks dokumen Anda :

Kode :

    import com.fasterxml.jackson.databind.ObjectMapper;


    class TestService {

       private ObjectMapper objectMapper;
       @Autowired
       public TestService(ObjectMapper objectMapper) {
         this.objectMapper = objectMapper;
       }

       public String createBulkDocument() {

          BulkRequest request = new BulkRequest();
          IndexRequest indexRequest;
          for(int index=0;index<list.size();index++) {
                Map<String, Object> documentMapper = objectMapper.convertValue(list.get(index), Map.class);
                indexRequest = new IndexRequest("myindex", "doc")
                        .source(documentMapper);
                request.add(indexRequest);
            }
         BulkResponse bulkresp=client.bulk(request, RequestOptions.DEFAULT); --> `client` is your elasticsearch rest level client
        return bulkresp.status().toString();     ---> This will return the status
 whether your documents got indexed or not
      }
  }
1
15 Mei 2020, 15:23