Массовый индекс эластичного поиска данных Spring на Percolator

Используя весенний эластичный поиск данных, я хочу сделать следующее (массовое индексирование)

Шаг 1

PUT surname
{
   "settings" : {
                "index" : {
                  "number_of_shards" : 1,
                  "number_of_replicas" : 0
                }
              },
            "mappings": {
                "properties": {
                  "message": {
                    "type": "text"
                  },
                  "query": {
                    "type": "percolator"
                  }
                }
              }
}

Шаг 2:

PUT surname/_bulk
{ "index" : { "_index" : "surname", "_type" : "_doc", "_id" : "1" } }
{ "query" : { "match_phrase" : { "message" : "Aal" } }}
{ "index" : { "_index" : "surname", "_type" : "_doc", "_id" : "2" } }
{ "query" : { "match_phrase" : { "message" : "Aalbers" } }}

Шаг 1 выполняется с помощью - https://stackoverflow.com/a/67724048/4068218< /а>

Для шага 2 я попытался

IndexQuery и UpdateQuery

Query query = new CriteriaQuery(new Criteria("match_phrase").subCriteria(new Criteria("message").is("Aal")));
        UpdateQuery updateQuery = builder(query).build();
        elasticsearchOperations.bulkUpdate(ImmutableList.of(updateQuery),IndexCoordinates.of(indexName.get()));

но оба не работают. Если я использую UpdateQuery, я получаю сообщение об ошибке проверки: 1: отсутствует идентификатор; 2: отсутствует сценарий или документ.

Если я использую IndexQuery, я получаю неверный формат запроса.

Как выполнить Шаг 2 в весеннем поиске эластичных данных? Любое руководство высоко ценится.


person Hari Rao    schedule 27.05.2021    source источник


Ответы (1)


Ниже код работал для меня. Поделитесь здесь, так как это может помочь кому-то

IndexQuery indexQuery = new IndexQueryBuilder()
                                        .withId("12")
                                        .withSource(String.format("{ \"query\" : { \"match_phrase\" : { \"message\" : \"%s\" } }}", "Aal"))
                                        .build();

        elasticsearchOperations.bulkIndex(ImmutableList.of(indexQuery),IndexCoordinates.of(indexName.get()));
person Hari Rao    schedule 27.05.2021