The Groovy API is no longer actively maintained or supported.
Search API
editSearch API
editThe search API is very similar to the
Java search API. The Groovy
extension allows to provide the search source to execute as a Closure
including the query itself (similar to GORM criteria builder):
def search = node.client.search { indices "test" types "type1" source { query { term(test: "value") } } } search.response.hits.each {SearchHit hit -> println "Got hit $hit.id from $hit.index/$hit.type" }
It can also be executed using the "Java API" while still using a closure for the query:
def search = node.client.prepareSearch("test").setQuery({ term(test: "value") }).gexecute(); search.response.hits.each {SearchHit hit -> println "Got hit $hit.id from $hit.index/$hit.type" }
The format of the search Closure
follows the same JSON syntax as the
Search API request.
More examples
editTerm query where multiple values are provided (see terms):
def search = node.client.search { indices "test" types "type1" source { query { terms(test: ["value1", "value2"]) } } }
Query string (see query string):
def search = node.client.search { indices "test" types "type1" source { query { query_string( fields: ["test"], query: "value1 value2") } } }
Pagination (see from/size):
def search = node.client.search { indices "test" types "type1" source { from = 0 size = 10 query { term(test: "value") } } }
Sorting (see sort):
def search = node.client.search { indices "test" types "type1" source { query { term(test: "value") } sort = [ date : [ order: "desc"] ] } }