Я использую 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?