|
@@ -88,12 +88,18 @@ You must enclose date math index name expressions within angle brackets. For exa
|
|
|
|
|
|
[source,js]
|
|
|
----------------------------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/<logstash-{now%2Fd-2d}>/_search' {
|
|
|
+GET /<logstash-{now%2Fd}>/_search
|
|
|
+{
|
|
|
"query" : {
|
|
|
- ...
|
|
|
+ "match": {
|
|
|
+ "test": "data"
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
----------------------------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[s/^/PUT logstash-2016.09.20\n/]
|
|
|
+// TEST[s/\{now/{2016.09.20||/]
|
|
|
|
|
|
NOTE: The `/` used for date rounding must be url encoded as `%2F` in any url.
|
|
|
|
|
@@ -102,11 +108,11 @@ they resolve to given the current time is 22rd March 2024 noon utc.
|
|
|
|
|
|
[options="header"]
|
|
|
|======
|
|
|
-| Expression |Resolves to
|
|
|
-| `<logstash-{now/d}>` | `logstash-2024.03.22`
|
|
|
-| `<logstash-{now/M}>` | `logstash-2024.03.01`
|
|
|
-| `<logstash-{now/M{YYYY.MM}}>` | `logstash-2024.03`
|
|
|
-| `<logstash-{now/M-1M{YYYY.MM}}>` | `logstash-2024.02`
|
|
|
+| Expression |Resolves to
|
|
|
+| `<logstash-{now/d}>` | `logstash-2024.03.22`
|
|
|
+| `<logstash-{now/M}>` | `logstash-2024.03.01`
|
|
|
+| `<logstash-{now/M{YYYY.MM}}>` | `logstash-2024.03`
|
|
|
+| `<logstash-{now/M-1M{YYYY.MM}}>` | `logstash-2024.02`
|
|
|
| `<logstash-{now/d{YYYY.MM.dd\|+12:00}}>` | `logstash-2024.03.23`
|
|
|
|======
|
|
|
|
|
@@ -121,12 +127,18 @@ three days, assuming the indices use the default Logstash index name format,
|
|
|
|
|
|
[source,js]
|
|
|
----------------------------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/<logstash-{now%2Fd-2d}>,<logstash-{now%2Fd-1d}>,<logstash-{now%2Fd}>/_search' {
|
|
|
+GET /<logstash-{now%2Fd-2d}>,<logstash-{now%2Fd-1d}>,<logstash-{now%2Fd}>/_search
|
|
|
+{
|
|
|
"query" : {
|
|
|
- ...
|
|
|
+ "match": {
|
|
|
+ "test": "data"
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
----------------------------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[s/^/PUT logstash-2016.09.20\nPUT logstash-2016.09.19\nPUT logstash-2016.09.18\n/]
|
|
|
+// TEST[s/\{now/{2016.09.20||/]
|
|
|
|
|
|
[[common-options]]
|
|
|
== Common options
|
|
@@ -199,117 +211,133 @@ All REST APIs accept a `filter_path` parameter that can be used to reduce
|
|
|
the response returned by elasticsearch. This parameter takes a comma
|
|
|
separated list of filters expressed with the dot notation:
|
|
|
|
|
|
-[source,sh]
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[setup:twitter]
|
|
|
+
|
|
|
+Responds:
|
|
|
+
|
|
|
+[source,js]
|
|
|
--------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/_search?pretty&filter_path=took,hits.hits._id,hits.hits._score'
|
|
|
{
|
|
|
"took" : 3,
|
|
|
"hits" : {
|
|
|
"hits" : [
|
|
|
{
|
|
|
- "_id" : "3640",
|
|
|
- "_score" : 1.0
|
|
|
- },
|
|
|
- {
|
|
|
- "_id" : "3642",
|
|
|
- "_score" : 1.0
|
|
|
+ "_id" : "0",
|
|
|
+ "_score" : 1.6375021
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE[s/"took" : 3/"took" : $body.took/]
|
|
|
|
|
|
It also supports the `*` wildcard character to match any field or part
|
|
|
of a field's name:
|
|
|
|
|
|
[source,sh]
|
|
|
--------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/_nodes/stats?filter_path=nodes.*.ho*'
|
|
|
+GET /_cluster/state?filter_path=metadata.indices.*.stat*
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[s/^/PUT twitter\n/]
|
|
|
+
|
|
|
+Responds:
|
|
|
+
|
|
|
+[source,sh]
|
|
|
+--------------------------------------------------
|
|
|
{
|
|
|
- "nodes" : {
|
|
|
- "lvJHed8uQQu4brS-SXKsNA" : {
|
|
|
- "host" : "portable"
|
|
|
+ "metadata" : {
|
|
|
+ "indices" : {
|
|
|
+ "twitter": {"state": "open"}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE
|
|
|
|
|
|
And the `**` wildcard can be used to include fields without knowing the
|
|
|
exact path of the field. For example, we can return the Lucene version
|
|
|
of every segment with this request:
|
|
|
|
|
|
-[source,sh]
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+GET /_cluster/state?filter_path=routing_table.indices.**.state
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[s/^/PUT twitter\n/]
|
|
|
+
|
|
|
+Responds:
|
|
|
+
|
|
|
+[source,js]
|
|
|
--------------------------------------------------
|
|
|
-curl 'localhost:9200/_segments?pretty&filter_path=indices.**.version'
|
|
|
{
|
|
|
- "indices" : {
|
|
|
- "movies" : {
|
|
|
- "shards" : {
|
|
|
- "0" : [ {
|
|
|
- "segments" : {
|
|
|
- "_0" : {
|
|
|
- "version" : "5.2.0"
|
|
|
- }
|
|
|
- }
|
|
|
- } ],
|
|
|
- "2" : [ {
|
|
|
- "segments" : {
|
|
|
- "_0" : {
|
|
|
- "version" : "5.2.0"
|
|
|
- }
|
|
|
- }
|
|
|
- } ]
|
|
|
- }
|
|
|
- },
|
|
|
- "books" : {
|
|
|
- "shards" : {
|
|
|
- "0" : [ {
|
|
|
- "segments" : {
|
|
|
- "_0" : {
|
|
|
- "version" : "5.2.0"
|
|
|
- }
|
|
|
- }
|
|
|
- } ]
|
|
|
+ "routing_table": {
|
|
|
+ "indices": {
|
|
|
+ "twitter": {
|
|
|
+ "shards": {
|
|
|
+ "0": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
|
|
|
+ "1": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
|
|
|
+ "2": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
|
|
|
+ "3": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
|
|
|
+ "4": [{"state": "STARTED"}, {"state": "UNASSIGNED"}]
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE
|
|
|
|
|
|
It is also possible to exclude one or more fields by prefixing the filter with the char `-`:
|
|
|
|
|
|
-[source,sh]
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+GET /_count?filter_path=-_shards
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[setup:twitter]
|
|
|
+
|
|
|
+Responds:
|
|
|
+
|
|
|
+[source,js]
|
|
|
--------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/_count?filter_path=-_shards'
|
|
|
{
|
|
|
- "count" : 1
|
|
|
+ "count" : 5
|
|
|
}
|
|
|
-%
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE
|
|
|
|
|
|
And for more control, both inclusive and exclusive filters can be combined in the same expression. In
|
|
|
this case, the exclusive filters will be applied first and the result will be filtered again using the
|
|
|
inclusive filters:
|
|
|
|
|
|
-[source,sh]
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+GET /_cluster/state?filter_path=metadata.indices.*.state,-metadata.indices.logstash-*
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[s/^/PUT index-1\nPUT index-2\nPUT index-3\nPUT logstash-2016.01\n/]
|
|
|
+
|
|
|
+Responds:
|
|
|
+
|
|
|
+[source,js]
|
|
|
--------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/_cluster/state?filter_path=metadata.indices.*.state,-metadata.indices.logs-*'
|
|
|
{
|
|
|
"metadata" : {
|
|
|
"indices" : {
|
|
|
- "index-1" : {
|
|
|
- "state" : "open"
|
|
|
- },
|
|
|
- "index-3" : {
|
|
|
- "state" : "open"
|
|
|
- },
|
|
|
- "index-2" : {
|
|
|
- "state" : "open"
|
|
|
- }
|
|
|
+ "index-1" : {"state" : "open"},
|
|
|
+ "index-2" : {"state" : "open"},
|
|
|
+ "index-3" : {"state" : "open"}
|
|
|
}
|
|
|
}
|
|
|
-}%
|
|
|
+}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE
|
|
|
|
|
|
Note that elasticsearch sometimes returns directly the raw value of a field,
|
|
|
like the `_source` field. If you want to filter `_source` fields, you should
|
|
@@ -317,21 +345,33 @@ consider combining the already existing `_source` parameter (see
|
|
|
<<get-source-filtering,Get API>> for more details) with the `filter_path`
|
|
|
parameter like this:
|
|
|
|
|
|
-[source,sh]
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+POST /library/book?refresh
|
|
|
+{"title": "Book #1", "rating": 200.1}
|
|
|
+POST /library/book?refresh
|
|
|
+{"title": "Book #2", "rating": 1.7}
|
|
|
+POST /library/book?refresh
|
|
|
+{"title": "Book #3", "rating": 0.1}
|
|
|
+GET /_search?filter_path=hits.hits._source&_source=title&sort=rating:desc
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+
|
|
|
+[source,js]
|
|
|
--------------------------------------------------
|
|
|
-curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title'
|
|
|
{
|
|
|
"hits" : {
|
|
|
"hits" : [ {
|
|
|
- "_source":{"title":"Book #2"}
|
|
|
- }, {
|
|
|
"_source":{"title":"Book #1"}
|
|
|
+ }, {
|
|
|
+ "_source":{"title":"Book #2"}
|
|
|
}, {
|
|
|
"_source":{"title":"Book #3"}
|
|
|
} ]
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE
|
|
|
|
|
|
|
|
|
[float]
|
|
@@ -340,32 +380,64 @@ curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=
|
|
|
The `flat_settings` flag affects rendering of the lists of settings. When
|
|
|
`flat_settings` flag is `true` settings are returned in a flat format:
|
|
|
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+GET twitter/_settings?flat_settings=true
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[setup:twitter]
|
|
|
+
|
|
|
+Returns:
|
|
|
+
|
|
|
[source,js]
|
|
|
--------------------------------------------------
|
|
|
{
|
|
|
- "persistent" : { },
|
|
|
- "transient" : {
|
|
|
- "discovery.zen.minimum_master_nodes" : "1"
|
|
|
+ "twitter" : {
|
|
|
+ "settings": {
|
|
|
+ "index.number_of_replicas": "1",
|
|
|
+ "index.number_of_shards": "1",
|
|
|
+ "index.creation_date": "1474389951325",
|
|
|
+ "index.uuid": "n6gzFZTgS664GUfx0Xrpjw",
|
|
|
+ "index.version.created": "6000001"
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE[s/1474389951325/$body.twitter.settings.index\\\\.creation_date/]
|
|
|
+// TESTRESPONSE[s/n6gzFZTgS664GUfx0Xrpjw/$body.twitter.settings.index\\\\.uuid/]
|
|
|
|
|
|
When the `flat_settings` flag is `false` settings are returned in a more
|
|
|
human readable structured format:
|
|
|
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+GET twitter/_settings?flat_settings=false
|
|
|
+--------------------------------------------------
|
|
|
+// CONSOLE
|
|
|
+// TEST[setup:twitter]
|
|
|
+
|
|
|
+Returns:
|
|
|
+
|
|
|
[source,js]
|
|
|
--------------------------------------------------
|
|
|
{
|
|
|
- "persistent" : { },
|
|
|
- "transient" : {
|
|
|
- "discovery" : {
|
|
|
- "zen" : {
|
|
|
- "minimum_master_nodes" : "1"
|
|
|
+ "twitter" : {
|
|
|
+ "settings" : {
|
|
|
+ "index" : {
|
|
|
+ "number_of_replicas": "1",
|
|
|
+ "number_of_shards": "1",
|
|
|
+ "creation_date": "1474389951325",
|
|
|
+ "uuid": "n6gzFZTgS664GUfx0Xrpjw",
|
|
|
+ "version": {
|
|
|
+ "created": "6000001"
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
+// TESTRESPONSE[s/1474389951325/$body.twitter.settings.index.creation_date/]
|
|
|
+// TESTRESPONSE[s/n6gzFZTgS664GUfx0Xrpjw/$body.twitter.settings.index.uuid/]
|
|
|
|
|
|
By default the `flat_settings` is set to `false`.
|
|
|
|