The Groovy API is no longer actively maintained or supported.
Search API
edit
IMPORTANT: This documentation is no longer updated. Refer to Elastic's version policy and the latest documentation.
Search 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"] ] } }