ElasticSearch 6.4: сопоставление с RestHighLevelClient - PullRequest
0 голосов
/ 24 августа 2018

Elastic теперь обновляет свои документы, чтобы использовать RestHighLevelClient с Java.У него также есть API сопоставления:

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-put-mapping.html

Теперь, как сделать такой запрос с этим API?

PUT /test
{
  "settings": {
    "analysis": {
      "filter": {
        "email": {
          "type": "pattern_capture",
          "preserve_original": 1,
          "patterns": [
            "([^@]+)",
            "(\\p{L}+)",
            "(\\d+)",
            "@(.+)",
            "([^-@]+)"
          ]
        }
      },
      "analyzer": {
        "email": {
          "tokenizer": "uax_url_email",
          "filter": [
            "email",
            "lowercase",
            "unique"
          ]
        }
      }
    }
  },
  "mappings": {
    "emails": {
      "properties": {
        "email": {
          "type": "string",
          "analyzer": "email"
        }
      }
    }
  }
}

Предполагается, что вы должны разделить егов два запроса и использовать этот API для второго запроса?https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-indices-put-settings.html

Или RestHighLevelClient предназначен для высокопроизводительных операций, но для начальной настройки вы можете свободно использовать RestTemplate (Spring) или любой другой обычный Java Rest Client?

1 Ответ

0 голосов
/ 24 августа 2018

Как вы можете видеть в документации:

PutMappingRequest request = new PutMappingRequest("twitter"); 
request.type("tweet"); 

Вы можете установить полезную нагрузку этого запроса, используя ваше определение как String

request.source(
"{\n" +
"  \"properties\": {\n" +
"    \"message\": {\n" +
"      \"type\": \"text\"\n" +
"    }\n" +
"  }\n" +
"}", 
XContentType.JSON);

или Карта с вашими свойствами или даже XContentBuilder.

С клиентом низкого уровня вы выполняете любые запросы, включая те, которые вы ищете.

Что касается названия, я думаю, что HighLevel относится к тому факту, что предусмотрены методы (также называемые повторное использование, удобство) для создания запросов, и никто не вынужден сам выполнять запросы остальных. Вы всегда можете использовать RestTemplate. Обратите внимание, что HighLevelRestClient внутренне использует apache HttpClient .

Но для удобства сопровождения кода я бы выбрал один путь. (Низко-Высокий уровень или любой http-клиент).

из документов (Обратите внимание, что RestHighLevelClient построен на низкоуровневом.)

Низкоуровневый Java REST-клиент внутренне использует Apache Http Async Client для отправки http запросов. Зависит от следующего Артефакты, а именно асинхронный http-клиент и его собственный транзитивный Зависимости:

  • org.apache.httpcomponents: httpasyncclient
  • org.apache.httpcomponents: httpcore-NiO
  • org.apache.httpcomponents: HttpClient
  • org.apache.httpcomponents: httpcore
  • Обще-кодек: Обще-кодек
  • Обще-каротаж: Обще-каротаж
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...