Невозможно получить данные с помощью QueryBuilders.termQuery - PullRequest
0 голосов
/ 09 сентября 2018

Я новичок в упругом поиске. Я пытался работать с клиентом высокого уровня.

Я могу работать с операциями CRUD, с функцией поиска я застрял.

Моя цель - привести все данные на основе идентификатора книги, начиная с критерия поиска E106

http://localhost:5918/book-elastic/books/book/E106

Я добавил часть кода ниже

Я могу получить все данные, используя

QueryBuilders.matchAllQuery ()

Но я не смог получить конкретное значение поля

QueryBuilders.termQuery ( "_ идентификатор", BookID)

Я также поделился скриншот обоих результатов

Может кто-нибудь помочь мне с запросом?

Пожалуйста, вернитесь, если потребуется какая-либо дополнительная информация.

Заранее спасибо

public Page<BookEntity> findByBookId(String bookId, Pageable pageable) throws IOException{

        SearchRequest searchRequest = new SearchRequest(INDEX); 
        searchRequest.types(TYPE);

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.fetchSource(false);
        //searchSourceBuilder.fetchSource(null, new String[]{"excludedProperty"});

        /*MatchQueryBuilder matchQueryBuilder =  new MatchQueryBuilder("id",bookId);
        matchQueryBuilder.fuzziness(Fuzziness.AUTO); 
        matchQueryBuilder.prefixLength(3); 
        matchQueryBuilder.maxExpansions(7);*/ 

        searchSourceBuilder.from((int)pageable.getOffset());
        searchSourceBuilder.size(pageable.getPageSize());

        //searchSourceBuilder.query(matchQueryBuilder);
        searchSourceBuilder.query(QueryBuilders.matchAllQuery());
        //searchSourceBuilder.query(QueryBuilders.termQuery("_id",bookId)); 
        searchRequest.source(searchSourceBuilder);

        SearchResponse searchResponse = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);
        SearchHits hits = searchResponse.getHits();
        SearchHit[] objectHits = hits.getHits();
        for (SearchHit searchHit : objectHits) {
            System.out.println("***************************");
            System.out.println("Search Hit :: "+searchHit);
            System.out.println("***************************");
        }


        return null;

    }

скриншот результата

  1. matchAllQuery

Ввод: {"from": 0, "size": 20, "query": {"match_all": {"boost": 1.0}}, "_ source": false}

Input Screenshot

Ответ

Значение ответа: {"взял": 5, "timed_out": ложно, "_ осколки": {"всего": 5, "успешно": 5, "пропущено": 0, "не удалось": 0}, " хиты ": {" всего ": 3," max_score ": 1.0," хиты ": [{" _ индекс ":" bookdata», "_ типа": "книги", "_ идентификатор": "E106401", "_ оценка": 1,0}, { "_ индекс": "bookdata", "_ типа": "книги", "_ идентификатор": "E106403", "_ Оценка": 1,0}, { "_ индекс": "bookdata", "_ типа": "книги », "_ идентификатор": "E10640", "_ оценка": 1,0}]}}

matchAllQuery

  1. Входные значения: QueryBuilders.termQuery ("_ id", bookId)

* +1055 * { "от": 0, "размер": 20, "запрос": { "Термин": { "_ идентификатор": { "значение": "E106", "наддува": 1.0}}}, "_ источник «ложь}

Input Vaues

Ответ

Ответ нулевой

enter image description here

1 Ответ

0 голосов
/ 12 сентября 2018

matchPhrasePrefixQuery от QueryBuilders решил мои проблемы

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