Эластичный поиск с использованием низкоуровневого отдыха Java - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь переместить приложение упругого поиска (6.6.1), весеннюю загрузку (2.1.3) из java 8 в java 11. Ранее я использовал высокоуровневый клиент отдыха Java для создания и поиска в индексе.Поскольку существует проблема (https://github.com/elastic/elasticsearch/issues/38299) в модульности API-интерфейса клиента высокого уровня, я пытаюсь использовать клиент низкого уровня отдыха, но не могу получить результаты поиска.

Пожалуйста, посмотрите некоторыефрагментов кода -

Индекс поиска, созданный с использованием высокоуровневого клиента отдыха

           IndexRequest indexRequest = new IndexRequest("legal3", "scee");
          IndexResponse indexResponse =  
          highlevelclient.index(indexRequest, RequestOptions.DEFAULT);

Запрос, используемый для поиска с использованием высокоуровневого клиента отдыха

    this.client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("localhost", 9200)));
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.query(QueryBuilders.multiMatchQuery(text, “field1”));
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.source(sourceBuilder);
    SearchResponse response1 = highlevelclient.search(searchRequest, RequestOptions.DEFAULT);

Затем я использовалнизкоуровневый клиент для поиска по тому же индексу (индекс, созданный с использованием высокоуровневого клиента)

        this.client = RestClient.builder(
                new HttpHost("localhost", 9200)).build();
        String query = "{\"query\":{\"match\":{\"field1\":\"" + text + "\"}}}";
        Response response = lowlevlelclient.performRequest("GET", "legal3", Collections.emptyMap(), new StringEntity(query, ContentType.APPLICATION_JSON));

Но он вернул только заголовки, никаких реальных данных.

{"legal3":{"aliases":{},"mappings":{"scee":{"properties”:”field1”:{“type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}}},"settings":{"index":{"number_of_shards":"5","blocks":{"read_only_allow_delete":"true"},"provided_name":"legal3","creation_date":"1552209921359","number_of_replicas":"1","uuid":"Y_GyoagoTIezgztuUYrlBQ","version":{"created":"6060199"}}}}}

Мне кажется, что яЯ делаю некоторые ошибки в настройке конечной точки (2-й параметр executeRequest), но я не могу найти много подробностей об этом.

Может кто-нибудь, пожалуйста, совет.

1 Ответ

0 голосов
/ 04 апреля 2019

Я наконец нашел решение.Как и ожидалось, проблема была с конечной точкой (2-й параметр performRequest)

Response response = lowlevelclient.performRequest("GET", "/_search", Collections.emptyMap(), new StringEntity(query, ContentType.APPLICATION_JSON));

Теперь я получаю ожидаемые результаты

...