Fixed watch_history template for Index Action
Fixed the mappings of the index action fields such that the `index` and `type` of the index response won't be analyzed. Original commit: elastic/x-pack-elasticsearch@5db8bf6a33
This commit is contained in:
parent
4b3e1592ca
commit
9e5fa64e03
|
@ -217,15 +217,15 @@
|
|||
"type": "object",
|
||||
"dynamic": true,
|
||||
"properties": {
|
||||
"_index": {
|
||||
"index": {
|
||||
"type": "string",
|
||||
"index": "not_analyzed"
|
||||
},
|
||||
"_type": {
|
||||
"type": {
|
||||
"type": "string",
|
||||
"index": "not_analyzed"
|
||||
},
|
||||
"_id": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"index": "not_analyzed"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
package org.elasticsearch.watcher.test.integration;
|
||||
|
||||
import org.elasticsearch.action.search.SearchResponse;
|
||||
import org.elasticsearch.search.aggregations.Aggregations;
|
||||
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
||||
import org.elasticsearch.watcher.history.HistoryStore;
|
||||
import org.elasticsearch.watcher.history.WatchRecord;
|
||||
import org.elasticsearch.watcher.test.AbstractWatcherIntegrationTests;
|
||||
import org.elasticsearch.watcher.transport.actions.put.PutWatchResponse;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.elasticsearch.search.aggregations.AggregationBuilders.terms;
|
||||
import static org.elasticsearch.search.builder.SearchSourceBuilder.searchSource;
|
||||
import static org.elasticsearch.watcher.actions.ActionBuilders.indexAction;
|
||||
import static org.elasticsearch.watcher.client.WatchSourceBuilders.watchBuilder;
|
||||
import static org.elasticsearch.watcher.trigger.TriggerBuilders.schedule;
|
||||
import static org.elasticsearch.watcher.trigger.schedule.Schedules.interval;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.notNullValue;
|
||||
|
||||
/**
|
||||
* This test makes sure that the index action response `index` and `type` fields in the watch_record action result are
|
||||
* not analyzed so they can be used in aggregations
|
||||
*/
|
||||
public class HistoryTemplateIndexActionMappingsTests extends AbstractWatcherIntegrationTests {
|
||||
|
||||
@Override
|
||||
protected boolean timeWarped() {
|
||||
return true; // just to have better control over the triggers
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean enableShield() {
|
||||
return false; // remove shield noise from this test
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexActionFields() throws Exception {
|
||||
String index = "the-index";
|
||||
String type = "the-type";
|
||||
|
||||
PutWatchResponse putWatchResponse = watcherClient().preparePutWatch("_id").setSource(watchBuilder()
|
||||
.trigger(schedule(interval("5s")))
|
||||
.addAction("index", indexAction(index, type)))
|
||||
.get();
|
||||
|
||||
assertThat(putWatchResponse.isCreated(), is(true));
|
||||
timeWarp().scheduler().trigger("_id");
|
||||
flush();
|
||||
refresh();
|
||||
|
||||
// the action should fail as no email server is available
|
||||
assertWatchWithMinimumActionsCount("_id", WatchRecord.State.EXECUTED, 1);
|
||||
flush();
|
||||
refresh();
|
||||
|
||||
SearchResponse response = client().prepareSearch(HistoryStore.INDEX_PREFIX + "*").setSource(searchSource()
|
||||
.aggregation(terms("index_action_indices").field("execution_result.actions.index.response.index"))
|
||||
.aggregation(terms("index_action_types").field("execution_result.actions.index.response.type"))
|
||||
.buildAsBytes())
|
||||
.get();
|
||||
|
||||
assertThat(response, notNullValue());
|
||||
assertThat(response.getHits().getTotalHits(), is(1L));
|
||||
Aggregations aggs = response.getAggregations();
|
||||
assertThat(aggs, notNullValue());
|
||||
|
||||
Terms terms = aggs.get("index_action_indices");
|
||||
assertThat(terms, notNullValue());
|
||||
assertThat(terms.getBuckets().size(), is(1));
|
||||
assertThat(terms.getBucketByKey(index), notNullValue());
|
||||
assertThat(terms.getBucketByKey(index).getDocCount(), is(1L));
|
||||
|
||||
terms = aggs.get("index_action_types");
|
||||
assertThat(terms, notNullValue());
|
||||
assertThat(terms.getBuckets().size(), is(1));
|
||||
assertThat(terms.getBucketByKey(type), notNullValue());
|
||||
assertThat(terms.getBucketByKey(type).getDocCount(), is(1L));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue