инициализировать Java-бин, используя несколько значений для индексации ElasticSearch - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь создать класс Java, где я хочу создать индексацию в ElasticSearch.Фактические данные доступны из REST API, но для тестирования моего кода индексации я написал логику.

Но теперь я хочу проверить свой индексный код с несколькими фиктивными данными.Для этого я создал класс bean-компонента и, используя setter / getter, хочу повторить реальный сценарий индексации документов вasticsearch.

Пожалуйста, найдите мой код Java ниже:

public static void main(String args[]) throws IOException
    {
        System.out.println("Indexing via Java Code ....");

        Product prod1=new Product("1001", 123172l, "Product", "VG3000");
        Product prod2=new Product("1002", 123172l, "Series", "Valves, VG3000");
        Product prod3=new Product("1003", 123172l, "Series", "Activa RoofTop, VG3000");
        Product prod4=new Product("1004", 123172l, "Product", "Activa RoofTop VG3000, 3000");

        Product prod=new Product();

        Map<String, Object> jsonMap ;

        for(int i=1;i<4;i++)
        {
            jsonMap = new HashMap<String, Object>();
            jsonMap.put("id", prod.getId());
            jsonMap.put("catalog_id", prod.getCatalog_id());
            jsonMap.put("catalog_type", prod.getCatalog_type());
            jsonMap.put("values", prod.getValues());

            IndexRequest request = new IndexRequest(INDEX_NAME, "doc", prod.getId() )
                    .source(jsonMap);

            try {

                IndexResponse response = SearchEngineClient.getInstance3().index(request); // increased timeout 


            } catch(ElasticsearchException e) {
                if (e.status() == RestStatus.CONFLICT) {
                }
                e.printStackTrace();
            }

        }

        System.out.println("Indexing done....");
    }

Пожалуйста, найдитеМой класс bean-компонента:

public class Product {

    public Product(String id, long catalog_id, String Catalog_type, String values)
    {
        this.id=id;
        this.catalog_id=catalog_id;
        this.catalog_type=catalog_type;
        this.values=values;

    }

    public Product()
    {

    }


    private String id;
    private long catalog_id;
    private String catalog_type;
    private String values;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Long getCatalog_id() {
        return catalog_id;
    }
    public void setCatalog_id(Long catalog_id) {
        this.catalog_id = catalog_id;
    }
    public String getCatalog_type() {
        return catalog_type;
    }
    public void setCatalog_type(String catalog_type) {
        this.catalog_type = catalog_type;
    }
    public String getValues() {
        return values;
    }
    public void setValues(String values) {
        this.values = values;
    }
}

Но при индексации я получаю значение из класса bean-компонента, для которого все данные поступают как null.

** Обновление 1:

Я изменил код следующим образом:

public static void main(String args[]) throws IOException
    {
        System.out.println("Indexing via Java Code ....");

        Product prod1=new Product("1001", 123172l, "Product", "VG3000");
        Product prod2=new Product("1002", 123172l, "Series", "Valves, VG3000");
        Product prod3=new Product("1003", 3536633, "Series", "Activa RoofTop, VG3000 abcd");
        Product prod4=new Product("1004", 123172l, "Product", "Activa RoofTop VG3000, 3000");

        Product prod=new Product();
        IndexRequest request;

        Map<String, Object> jsonMap ;




            jsonMap = new HashMap<String, Object>();
            jsonMap.put("id", prod1.getId());
            jsonMap.put("catalog_id", prod1.getCatalog_id());
            jsonMap.put("catalog_type", prod1.getCatalog_type());
            jsonMap.put("values", prod1.getValues());

            request = new IndexRequest(INDEX_NAME, "doc", prod1.getId() )
                    .source(jsonMap);
            IndexResponse response1 = SearchEngineClient.getInstance3().index(request);

            jsonMap = new HashMap<String, Object>();
            jsonMap.put("id", prod2.getId());
            jsonMap.put("catalog_id", prod2.getCatalog_id());
            jsonMap.put("catalog_type", prod2.getCatalog_type());
            jsonMap.put("values", prod2.getValues());

            request = new IndexRequest(INDEX_NAME, "doc", prod2.getId() )
                    .source(jsonMap);
            IndexResponse response2 = SearchEngineClient.getInstance3().index(request);


            jsonMap = new HashMap<String, Object>();
            jsonMap.put("id", prod3.getId());
            jsonMap.put("catalog_id", prod3.getCatalog_id());
            jsonMap.put("catalog_type", prod3.getCatalog_type());
            jsonMap.put("values", prod3.getValues());

            request = new IndexRequest(INDEX_NAME, "doc", prod3.getId() )
                    .source(jsonMap);
            IndexResponse response3 = SearchEngineClient.getInstance3().index(request);


            jsonMap = new HashMap<String, Object>();
            jsonMap.put("id", prod4.getId());
            jsonMap.put("catalog_id", prod4.getCatalog_id());
            jsonMap.put("catalog_type", prod4.getCatalog_type());
            jsonMap.put("values", prod4.getValues());

            request = new IndexRequest(INDEX_NAME, "doc", prod4.getId() )
                    .source(jsonMap);
            IndexResponse response4 = SearchEngineClient.getInstance3().index(request);

        System.out.println("Indexing done....");


    }

Есть ли другой способ упростить то же самое .?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...