123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- [[search]]
- == Search API
- The search API is very similar to the
- // {javaclient}/java-search.html[]
- 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):
- [source,groovy]
- --------------------------------------------------
- def search = node.client.search {
- indices "test"
- types "_doc"
- 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:
- [source,groovy]
- --------------------------------------------------
- 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
- {ref}/search-search.html[Search API] request.
- [[more-examples]]
- === More examples
- Term query where multiple values are provided (see
- {ref}/query-dsl-terms-query.html[terms]):
- [source,groovy]
- --------------------------------------------------
- def search = node.client.search {
- indices "test"
- types "_doc"
- source {
- query {
- terms(test: ["value1", "value2"])
- }
- }
- }
- --------------------------------------------------
- Query string (see
- {ref}/query-dsl-query-string-query.html[query string]):
- [source,groovy]
- --------------------------------------------------
- def search = node.client.search {
- indices "test"
- types "_doc"
- source {
- query {
- query_string(
- fields: ["test"],
- query: "value1 value2")
- }
- }
- }
- --------------------------------------------------
- Pagination (see
- {ref}/search-request-from-size.html[from/size]):
- [source,groovy]
- --------------------------------------------------
- def search = node.client.search {
- indices "test"
- types "_doc"
- source {
- from = 0
- size = 10
- query {
- term(test: "value")
- }
- }
- }
- --------------------------------------------------
- Sorting (see {ref}/search-request-sort.html[sort]):
- [source,groovy]
- --------------------------------------------------
- def search = node.client.search {
- indices "test"
- types "_doc"
- source {
- query {
- term(test: "value")
- }
- sort = [
- date : [ order: "desc"]
- ]
- }
- }
- --------------------------------------------------
|