Scalaasticsearch с использованием Java-клиента высокого уровня отдыха: регулярное выражение и прокрутка - PullRequest
1 голос
/ 25 июня 2019

Я использую scala (2.12), чтобы запросить Elasticsearch (6.5), используя клиент высокого уровня Java rest (6.5).

libraryDependencies += "org.elasticsearch" % "elasticsearch" % "6.5.4"

libraryDependencies += "org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % "6.5.4"

Базовый запрос (matchQuery) и прокрутка у меня работает нормально.

val credentialsProvider = new BasicCredentialsProvider
    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user", "password"))

val builder = RestClient.builder(new HttpHost("host", port, "https"))

builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
      override def customizeHttpClient(httpClientBuilder: HttpAsyncClientBuilder): HttpAsyncClientBuilder = httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
})

var client = new RestHighLevelClient(builder)

val scroll = new Scroll(TimeValue.timeValueMinutes(1L))

// Index
val searchRequest = new SearchRequest("index")

val searchSourceBuilder = new SearchSourceBuilder()

searchSourceBuilder.query(QueryBuilders.matchQuery("name.field", "value"))

searchSourceBuilder.size(500)

searchRequest.source(searchSourceBuilder)

searchRequest.scroll(scroll)
var searchResponse = client.search(searchRequest, RequestOptions.DEFAULT)
var scrollId = searchResponse.getScrollId
var searchHits = searchResponse.getHits().getHits

while (searchHits != null && searchHits.length > 0) {
      val scrollRequest = new SearchScrollRequest(scrollId)
      scrollRequest.scroll(scroll)
      searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT)
      println(searchResponse.getHits.getHits.toList)
      scrollId = searchResponse.getScrollId
      searchHits = searchResponse.getHits.getHits

}

По сути, приведенный выше запрос работает, как и ожидалось, со всеми возвращенными данными.

Теперь мой случай Мне нужно регулярное выражение (а неmathQuery).

Так что я просто изменяю эту строку;но сейчас ничего не получается.

searchSourceBuilder.query(QueryBuilders.regexpQuery("name.field", "value"))

Что мне здесь не хватает?Как использовать Regexp?

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