# Watcher 5-rc1 Java API. Where's searchRequest("idx") method?

**URL:** <https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207>\
**Category:** Elasticsearch\
**Tags:** elastic-stack-alerting\
**Created:** [October 17, 2016, 5:23pm UTC](https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207 "2016-10-17T17:23:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![djmcgreal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/djmcgreal/32/52956_2.png) [@djmcgreal](https://discuss.elastic.co/u/djmcgreal)\
**Post date:** [October 17, 2016, 5:23pm UTC](https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207/1 "2016-10-17T17:23:05Z")

</div>

Hi Elastic Watchers,

Following [https://www.elastic.co/guide/en/x-pack/current/api-java.html](https://www.elastic.co/guide/en/x-pack/current/api-java.html), the guide says:

```
.input(searchInput(searchRequest("idx").source(...

```

But I can't find a searchRequest method anywhere.

Any ideas where it lives, or has it been replaced by something?

Best, Dan.

---

<div class="post-metadata">

**Author:** ![djmcgreal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/djmcgreal/32/52956_2.png) [@djmcgreal](https://discuss.elastic.co/u/djmcgreal)\
**Post date:** [October 17, 2016, 5:35pm UTC](https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207/2 "2016-10-17T17:35:38Z")

</div>

PS. Also, in the non-builder example, the WatcherSearchTemplateRequest constructor with a String as the final argument doesn't seem to exist.

---

<div class="post-metadata">

**Author:** ![djmcgreal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/djmcgreal/32/52956_2.png) [@djmcgreal](https://discuss.elastic.co/u/djmcgreal)\
**Post date:** [October 17, 2016, 6:07pm UTC](https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207/3 "2016-10-17T18:07:45Z")

</div>

I ended up with this (not good, just getting it to build for 5.0):

```
			BoolQueryBuilder query = QueryBuilders.boolQuery();
		SearchRequest source = Requests.searchRequest("idx") 
				.source(SearchSourceBuilder.searchSource()
						.query(query));

		//TODO build query

		
		Condition.Builder<?> condition = ConditionBuilders.alwaysCondition();
				
		WatchSourceBuilder watchBuilder = WatchSourceBuilders.watchBuilder()
				.trigger(TriggerBuilders.schedule(null)) //TODO Schedules.cron
				.input(InputBuilders.searchInput(new WatcherSearchTemplateRequest(new String[]{"idx"}, null, 
						SearchType.DEFAULT, WatcherSearchTemplateRequest.DEFAULT_INDICES_OPTIONS, 
						source.source().buildAsBytes())))
				.condition(condition)
				.addAction("build_epcis_document", ActionBuilders.webhookAction(
						HttpRequestTemplate.builder("localhost", 8181)
						.path("/internal/{{ctx.watch_id}}") 
						.body("{{ctx.payload}}")));

		watcherClient.preparePutWatch("id")
		.setSource(watchBuilder).get();
```

---

<div class="post-metadata">

**Author:** ![spinscale](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/spinscale/32/25011_2.png) [@spinscale](https://discuss.elastic.co/u/spinscale)\
**Post date:** [October 18, 2016, 7:22am UTC](https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207/4 "2016-10-18T07:22:13Z")

</div>

Hey,

`searchRequest("idx")` is just a static import of `Requests.searchRequest`, which you already used. They way I would write this query would be

```auto
WatchSourceBuilder watchBuilder = WatchSourceBuilders.watchBuilder()
        .trigger(TriggerBuilders.schedule(null)) //TODO Schedules.cron
        .input(searchInput(templateRequest(searchSource().query(QueryBuilders.matchAllQuery()), "idx")))
        .condition(alwaysCondition())
        .addAction("build_epcis_document", ActionBuilders.webhookAction(
                HttpRequestTemplate.builder("localhost", 8181)
                        .path("/internal/{{ctx.watch_id}}")
                        .body("{{ctx.payload}}")));

watcherClient.preparePutWatch("id").setSource(watchBuilder).get();

public static WatcherSearchTemplateRequest templateRequest(SearchSourceBuilder sourceBuilder, String... indices) {
    try {
        XContentBuilder xContentBuilder = jsonBuilder();
        xContentBuilder.value(sourceBuilder);
        return new WatcherSearchTemplateRequest(indices, new String[0], SearchType.DEFAULT,
                WatcherSearchTemplateRequest.DEFAULT_INDICES_OPTIONS, xContentBuilder.bytes());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

```

`searchSource()` is a static import from the `SearchSourceBuilder` class.

That said, I am going to check the java API docs now and fix them where needed.

Thanks a lot for your feedback!

--Alex

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:42pm UTC](https://discuss.elastic.co/t/watcher-5-rc1-java-api-wheres-searchrequest-idx-method/63207/5 "2017-07-06T13:42:33Z")

</div>


