Как запустить необработанный запрос в ElasticSearch 6.5.1, используя JavaHighLevelRestClient? - PullRequest
0 голосов
/ 26 марта 2019

Я хочу выполнить необработанный запрос для эластичного поиска версии 6.5.1, используя JavaHighLevelRestClient

GET /my_index/_search
{
  "query": {
    "match": {
      "name": "Neeraj"
    }
  }
}

В предыдущих версиях упругих с PreBuiltTransportClient мы можем достичь этого с помощью

SearchResponce searchResponse = client.prepareSearch()
.setQuery("{ "query": { "match": { "name": "Neeraj" } } }").get();

И RestHighLevelClient не имеет такого метода prepareSearch, поэтому как мы можем добиться того же с RestHighLevelClient ?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Нашли решение в Elastic Docs , чтобы достичь этого, мы можем использовать QueryBuilders's simpleQueryStringQuery метод для достижения этой цели:

 String query = "{ \"query\": { \"match\": { \"name\": \"Neeraj\" } } }";

 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
 searchSourceBuilder.query(QueryBuilders.simpleQueryStringQuery(query));
 searchSourceBuilder.from(0);
 searchSourceBuilder.size(10);

 SearchRequest searchRequest = new SearchRequest();
 searchRequest.indices(indexName);
 searchRequest.source(searchSourceBuilder);


 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
 List<MyRecordDTO> goldenRecords = getSearchResult(searchResponse);

Согласно документации

/**
 * A query that acts similar to a query_string query, but won't throw
 * exceptions for any weird string syntax. See
 * {@link org.apache.lucene.queryparser.simple.SimpleQueryParser} for the full
 * supported syntax.
 */
public static SimpleQueryStringBuilder simpleQueryStringQuery(String queryString) {
    return new SimpleQueryStringBuilder(queryString);
}
0 голосов
/ 26 марта 2019
Документация

действительно хороша и содержит много примеров: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-search.html

В вашем случае это должно быть:

   SearchRequest searchRequest = new SearchRequest("my_index");
    val searchSourceBuilder = new SearchSourceBuilder;
    QueryBuilder query = QueryBuilders.termsQuery("name", "Neeraj");
    searchSourceBuilder.query(query)
    searchRequest.source(searchSourceBuilder)
    SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

Обратите внимание, что вы также можете написать запрос в одной строке.

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