OpenSearch/docs/reference/search.asciidoc
Alex Ksikes ec4f12f9ef More Like This: removal of the MLT API
Removes the More Like This API, users should now use the More Like This query.
The MLT API tests were converted to their query equivalent. Also some clean
ups in MLT tests.

Closes #10736
Closes #11003
2015-05-06 18:11:11 +02:00

105 lines
2.6 KiB
Plaintext

[[search]]
= Search APIs
[partintro]
--
Most search APIs are <<search-multi-index-type,multi-index&#44; multi-type>>, with the
exception of the <<search-explain>> endpoints.
[float]
[[search-routing]]
== Routing
When executing a search, it will be broadcasted to all the index/indices
shards (round robin between replicas). Which shards will be searched on
can be controlled by providing the `routing` parameter. For example,
when indexing tweets, the routing value can be the user name:
[source,js]
--------------------------------------------------
$ curl -XPOST 'http://localhost:9200/twitter/tweet?routing=kimchy' -d '{
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
'
--------------------------------------------------
In such a case, if we want to search only on the tweets for a specific
user, we can specify it as the routing, resulting in the search hitting
only the relevant shard:
[source,js]
--------------------------------------------------
$ curl -XGET 'http://localhost:9200/twitter/tweet/_search?routing=kimchy' -d '{
"query": {
"filtered" : {
"query" : {
"query_string" : {
"query" : "some query string here"
}
},
"filter" : {
"term" : { "user" : "kimchy" }
}
}
}
}
'
--------------------------------------------------
The routing parameter can be multi valued represented as a comma
separated string. This will result in hitting the relevant shards where
the routing values match to.
[float]
[[stats-groups]]
== Stats Groups
A search can be associated with stats groups, which maintains a
statistics aggregation per group. It can later be retrieved using the
<<indices-stats,indices stats>> API
specifically. For example, here is a search body request that associate
the request with two different groups:
[source,js]
--------------------------------------------------
{
"query" : {
"match_all" : {}
},
"stats" : ["group1", "group2"]
}
--------------------------------------------------
--
include::search/search.asciidoc[]
include::search/uri-request.asciidoc[]
include::search/request-body.asciidoc[]
include::search/search-template.asciidoc[]
include::search/search-shards.asciidoc[]
include::search/facets.asciidoc[]
include::search/suggesters.asciidoc[]
include::search/multi-search.asciidoc[]
include::search/count.asciidoc[]
include::search/exists.asciidoc[]
include::search/validate.asciidoc[]
include::search/explain.asciidoc[]
include::search/percolate.asciidoc[]
include::search/field-stats.asciidoc[]