Предложение завершения в Elasticsearch 6.5.4 с клиентским API Java REST - PullRequest
0 голосов
/ 28 января 2019

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

Я вставилобразец данных в ES с сопоставлением, и приведенный ниже запрос CURL (окна) возвращает результат

curl -H "Content-Type: application/json" -X POST localhost:9200/hotels/_search?pretty -d^
"{^
    \"suggest\": {^
        \"hotel_suggest\" : {^
            \"prefix\" : \"hot\", ^
            \"completion\" : { ^
                \"field\" : \"name_suggest\" ^
            }^
        }^
    }^
}"

К сожалению, приведенный ниже код с использованием API Java не возвращаетсялюбые документы из БД (просто печать результатов для целей тестирования)

    public String suggestSearch() throws IOException {
        SearchRequest searchRequest = new SearchRequest("hotels");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//        searchSourceBuilder.query(QueryBuilders.matchAllQuery());

        SuggestionBuilder termSuggestionBuilder =
                SuggestBuilders.termSuggestion("name").text("hot");
        SuggestBuilder suggestBuilder = new SuggestBuilder();
        suggestBuilder.addSuggestion("name_suggest", termSuggestionBuilder);
        searchSourceBuilder.suggest(suggestBuilder);

        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);


        Suggest suggest = searchResponse.getSuggest();
        TermSuggestion termSuggestion = suggest.getSuggestion("name_suggest");

        for (TermSuggestion.Entry entry : termSuggestion.getEntries()) {
            for (TermSuggestion.Entry.Option option : entry) {
                String suggestText = option.getText().string();
                System.out.println(suggestText);
            }
        }
        return "SUCCESS";
    }

Что не так в этом коде?

1 Ответ

0 голосов
/ 28 января 2019

Вот пример кода для получения результатов из примера подсказка для завершения

public static void suggestSearch() 
    {

        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost( "your-ip-here", 9200, "http" ) ) );

        SearchRequest searchRequest = new SearchRequest( "music" );
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

        SuggestionBuilder termSuggestionBuilder = SuggestBuilders.completionSuggestion( "suggest" ).prefix( "nev" );
        SuggestBuilder suggestBuilder = new SuggestBuilder();
        suggestBuilder.addSuggestion( "song-suggest", termSuggestionBuilder );
        searchSourceBuilder.suggest( suggestBuilder );

        searchRequest.source( searchSourceBuilder );
        SearchResponse searchResponse = null;

        try
        {
            searchResponse = client.search( searchRequest );
        }
        catch ( IOException e )
        {
            e.printStackTrace();
        }

        Suggest suggest = searchResponse.getSuggest();
        CompletionSuggestion entries = suggest.getSuggestion( "song-suggest" );

        for ( CompletionSuggestion.Entry entry : entries )
        {
            for ( CompletionSuggestion.Entry.Option option : entry.getOptions() )
            {
                String suggestText = option.getText().string();
                System.out.println( suggestText );
            }
        }
    }

А для примера you-complete-me

public static void suggestSearch()
    {

        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost( "192.168.1.245", 9200, "http" ) ) );

        SearchRequest searchRequest = new SearchRequest( "hotels" );
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
       searchSourceBuilder.query(QueryBuilders.matchAllQuery());

        CompletionSuggestionBuilder completionSuggestionBuilder = SuggestBuilders.completionSuggestion( "name_suggest" ).prefix( "M" );

        SuggestBuilder suggestBuilder = new SuggestBuilder();
        suggestBuilder.addSuggestion( "name_suggest", completionSuggestionBuilder );
        searchSourceBuilder.suggest( suggestBuilder );

        searchRequest.source( searchSourceBuilder );
        SearchResponse searchResponse = null;

        try
        {
            searchResponse = client.search( searchRequest );
        }
        catch ( IOException e )
        {
            e.printStackTrace();
        }

        Suggest suggest = searchResponse.getSuggest();
        CompletionSuggestion entries = suggest.getSuggestion( "name_suggest" );

        for ( CompletionSuggestion.Entry entry : entries )
        {
            for ( CompletionSuggestion.Entry.Option option : entry.getOptions() )
            {
                String suggestText = option.getText().string();
                System.out.println( suggestText );
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...