Skip to content

Commit 2d01842

Browse files
committed
add PUT options for _warmer
PUT with a single warmer can now be done with `[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name` see roadmap issue elastic#4071
1 parent fcea5e0 commit 2d01842

File tree

5 files changed

+225
-2
lines changed

5 files changed

+225
-2
lines changed

docs/reference/indices/warmers.asciidoc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,31 @@ curl -XPUT localhost:9200/test/type1/_warmer/warmer_1 -d '{
112112
}'
113113
--------------------------------------------------
114114

115+
All options:
116+
117+
[source,js]
118+
--------------------------------------------------
119+
120+
[PUT|POST] _warmer/{warmer_name}
121+
122+
[PUT|POST] /{index}/_warmer/{warmer_name}
123+
124+
[PUT|POST] /{index}/{type}/_warmer/{warmer_name}
125+
126+
--------------------------------------------------
127+
128+
129+
where
130+
131+
[horizontal]
132+
`{index}`:: `* | _all | glob pattern | name1, name2, …`
133+
134+
`{type}`:: `* | _all | glob pattern | name1, name2, …`
135+
136+
Instead of `_warmer` you can also use the plural `_warmers`.
137+
138+
139+
115140
[float]
116141
[[removing]]
117142
=== Delete Warmer

rest-api-spec/api/indices.put_warmer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"indices.put_warmer": {
33
"documentation": "http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-warmers.html",
4-
"methods": ["PUT"],
4+
"methods": ["PUT", "POST"],
55
"url": {
66
"path": "/{index}/_warmer/{name}",
7-
"paths": ["/{index}/_warmer/{name}", "/{index}/{type}/_warmer/{name}"],
7+
"paths": ["/_warmer/{name}", "/{index}/_warmer/{name}", "/{index}/{type}/_warmer/{name}", "/_warmers/{name}", "/{index}/_warmers/{name}", "/{index}/{type}/_warmers/{name}"],
88
"parts": {
99
"index": {
1010
"type" : "list",
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
---
2+
"Test Create and update warmer with all options (PUT {index|_all|*|prefix*}/type/_warmer)":
3+
4+
# create two indices
5+
- do:
6+
indices.create:
7+
index: test_index1
8+
- do:
9+
indices.create:
10+
index: test_index2
11+
12+
# put warmer per index
13+
- do:
14+
indices.put_warmer:
15+
index: test_index1
16+
name: warmer_0
17+
body:
18+
query:
19+
match_all: {}
20+
- do:
21+
indices.put_warmer:
22+
index: test_index2
23+
name: warmer_0
24+
body:
25+
query:
26+
match_all: {}
27+
28+
- do:
29+
indices.get_warmer:
30+
index: test_index1
31+
32+
- match: {test_index1.warmers.warmer_0.source.query.match_all: {}}
33+
34+
- do:
35+
indices.get_warmer:
36+
index: test_index2
37+
38+
- match: {test_index2.warmers.warmer_0.source.query.match_all: {}}
39+
40+
41+
42+
# put warmer in _all index
43+
- do:
44+
indices.put_warmer:
45+
index: _all
46+
name: warmer_1
47+
body:
48+
query:
49+
match_all: {}
50+
- do:
51+
indices.get_warmer:
52+
index: test_index1
53+
54+
- match: {test_index1.warmers.warmer_1.source.query.match_all: {}}
55+
56+
- do:
57+
indices.get_warmer:
58+
index: test_index2
59+
60+
- match: {test_index2.warmers.warmer_1.source.query.match_all: {}}
61+
62+
63+
# put warmer in * index
64+
- do:
65+
indices.put_warmer:
66+
index: "*"
67+
name: warmer_2
68+
body:
69+
query:
70+
match_all: {}
71+
- do:
72+
indices.get_warmer:
73+
index: test_index1
74+
75+
- match: {test_index1.warmers.warmer_2.source.query.match_all: {}}
76+
77+
- do:
78+
indices.get_warmer:
79+
index: test_index2
80+
81+
- match: {test_index2.warmers.warmer_2.source.query.match_all: {}}
82+
83+
# put warmer prefix* index
84+
- do:
85+
indices.put_warmer:
86+
index: "test_index*"
87+
name: warmer_3
88+
body:
89+
query:
90+
match_all: {}
91+
- do:
92+
indices.get_warmer:
93+
index: test_index1
94+
95+
- match: {test_index1.warmers.warmer_3.source.query.match_all: {}}
96+
97+
- do:
98+
indices.get_warmer:
99+
index: test_index2
100+
101+
- match: {test_index2.warmers.warmer_3.source.query.match_all: {}}
102+
103+
104+
105+
# put warmer in list of indices
106+
- do:
107+
indices.put_warmer:
108+
index: [test_index1, test_index2]
109+
name: warmer_4
110+
body:
111+
query:
112+
match_all: {}
113+
- do:
114+
indices.get_warmer:
115+
index: test_index1
116+
117+
- match: {test_index1.warmers.warmer_4.source.query.match_all: {}}
118+
119+
- do:
120+
indices.get_warmer:
121+
index: test_index2
122+
123+
- match: {test_index2.warmers.warmer_4.source.query.match_all: {}}
124+
125+
126+
# put warmer with blank index
127+
- do:
128+
indices.put_warmer:
129+
name: warmer_5
130+
body:
131+
query:
132+
match_all: {}
133+
- do:
134+
indices.get_warmer:
135+
index: test_index1
136+
137+
- match: {test_index1.warmers.warmer_5.source.query.match_all: {}}
138+
139+
- do:
140+
indices.get_warmer:
141+
index: test_index2
142+
143+
- match: {test_index2.warmers.warmer_5.source.query.match_all: {}}
144+
145+
146+
147+

src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/put/RestPutWarmerAction.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.elasticsearch.common.settings.Settings;
2929
import org.elasticsearch.rest.*;
3030

31+
import static org.elasticsearch.rest.RestRequest.Method.POST;
3132
import static org.elasticsearch.rest.RestRequest.Method.PUT;
3233

3334
/**
@@ -37,8 +38,21 @@ public class RestPutWarmerAction extends BaseRestHandler {
3738
@Inject
3839
public RestPutWarmerAction(Settings settings, Client client, RestController controller) {
3940
super(settings, client);
41+
controller.registerHandler(PUT, "/_warmer/{name}", this);
4042
controller.registerHandler(PUT, "/{index}/_warmer/{name}", this);
4143
controller.registerHandler(PUT, "/{index}/{type}/_warmer/{name}", this);
44+
45+
controller.registerHandler(PUT, "/_warmers/{name}", this);
46+
controller.registerHandler(PUT, "/{index}/_warmers/{name}", this);
47+
controller.registerHandler(PUT, "/{index}/{type}/_warmers/{name}", this);
48+
49+
controller.registerHandler(POST, "/_warmer/{name}", this);
50+
controller.registerHandler(POST, "/{index}/_warmer/{name}", this);
51+
controller.registerHandler(POST, "/{index}/{type}/_warmer/{name}", this);
52+
53+
controller.registerHandler(POST, "/_warmers/{name}", this);
54+
controller.registerHandler(POST, "/{index}/_warmers/{name}", this);
55+
controller.registerHandler(POST, "/{index}/{type}/_warmers/{name}", this);
4256
}
4357

4458
@Override

src/test/java/org/elasticsearch/indices/IndicesOptionsTests.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import org.elasticsearch.common.Strings;
5757
import org.elasticsearch.common.bytes.BytesArray;
5858
import org.elasticsearch.common.settings.ImmutableSettings;
59+
import org.elasticsearch.index.query.QueryBuilders;
5960
import org.elasticsearch.search.suggest.SuggestBuilder;
6061
import org.elasticsearch.search.warmer.IndexWarmersMetaData;
6162
import org.elasticsearch.test.ElasticsearchIntegrationTest;
@@ -538,6 +539,42 @@ public void testDeleteMapping_wildcard() throws Exception {
538539
assertThat(client().admin().indices().prepareTypesExists("barbaz").setTypes("type1").get().isExists(), equalTo(false));
539540
}
540541

542+
543+
@Test
544+
public void testPutWarmer() throws Exception {
545+
assertAcked(prepareCreate("foobar"));
546+
ensureYellow();
547+
verify(client().admin().indices().preparePutWarmer("warmer1").setSearchRequest(client().prepareSearch().setIndices("foobar").setQuery(QueryBuilders.matchAllQuery())), false);
548+
assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("warmer1").get().getWarmers().size(), equalTo(1));
549+
550+
}
551+
552+
@Test
553+
public void testPutWarmer_wildcard() throws Exception {
554+
555+
assertAcked(prepareCreate("foo"));
556+
assertAcked(prepareCreate("foobar"));
557+
assertAcked(prepareCreate("bar"));
558+
assertAcked(prepareCreate("barbaz"));
559+
ensureYellow();
560+
561+
verify(client().admin().indices().preparePutWarmer("warmer1").setSearchRequest(client().prepareSearch().setIndices("foo*").setQuery(QueryBuilders.matchAllQuery())), false);
562+
563+
assertThat(client().admin().indices().prepareGetWarmers("foo").setWarmers("warmer1").get().getWarmers().size(), equalTo(1));
564+
assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("warmer1").get().getWarmers().size(), equalTo(1));
565+
assertThat(client().admin().indices().prepareGetWarmers("bar").setWarmers("warmer1").get().getWarmers().size(), equalTo(0));
566+
assertThat(client().admin().indices().prepareGetWarmers("barbaz").setWarmers("warmer1").get().getWarmers().size(), equalTo(0));
567+
568+
verify(client().admin().indices().preparePutWarmer("warmer2").setSearchRequest(client().prepareSearch().setIndices().setQuery(QueryBuilders.matchAllQuery())), false);
569+
570+
assertThat(client().admin().indices().prepareGetWarmers("foo").setWarmers("warmer2").get().getWarmers().size(), equalTo(1));
571+
assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("warmer2").get().getWarmers().size(), equalTo(1));
572+
assertThat(client().admin().indices().prepareGetWarmers("bar").setWarmers("warmer2").get().getWarmers().size(), equalTo(1));
573+
assertThat(client().admin().indices().prepareGetWarmers("barbaz").setWarmers("warmer2").get().getWarmers().size(), equalTo(1));
574+
575+
}
576+
577+
541578
@Test
542579
public void testDeleteWarmer() throws Exception {
543580
IndexWarmersMetaData.Entry entry = new IndexWarmersMetaData.Entry(

0 commit comments

Comments
 (0)