# Multi Type Search Using java API more specifically Spring Data Elasticsearch

**URL:** <https://discuss.elastic.co/t/multi-type-search-using-java-api-more-specifically-spring-data-elasticsearch/47300>\
**Category:** Elasticsearch\
**Created:** [April 13, 2016, 6:32pm UTC](https://discuss.elastic.co/t/multi-type-search-using-java-api-more-specifically-spring-data-elasticsearch/47300 "2016-04-13T18:32:40Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![rahul\_agarwal](https://avatars.discourse-cdn.com/v4/letter/r/c67d28/32.png) [@rahul\_agarwal](https://discuss.elastic.co/u/rahul_agarwal)\
**Post date:** [April 13, 2016, 6:32pm UTC](https://discuss.elastic.co/t/multi-type-search-using-java-api-more-specifically-spring-data-elasticsearch/47300/1 "2016-04-13T18:32:40Z")

</div>

I want to Search My Index in all Types and all fields for the query. I know how to do it using REST way. I want to know how to do it using JAVA API and more specifically in Spring Data Elasticsearch.

This is some code i have written but seams to be pretty messed in terms of return Type.

@Override  
public Page searchInAll(String searchQuery) {

```
MatchQueryBuilder matchQueryBuilder =QueryBuilders.matchQuery("_all", "trump");
SearchQuery searchQueryFinal = new NativeSearchQueryBuilder().withQuery(matchQueryBuilder).withIndices("booksearchserver").withTypes("authors","books").build();

return elasticsearchTemplate.queryForPage(searchQueryFinal, Author.class, new SearchResultMapper(){
    @SuppressWarnings("unchecked")

    public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {

        long totalHits = response.getHits().getTotalHits();
        List<Book> content = new ArrayList<Book>();
        for (SearchHit searchHit : response.getHits()) {
            if (response.getHits().getHits().length <= 0) {
                return null;
            }else if(searchHit.getType().equals("books")){
                logger.info("Creating Book,Mapping Book,Adding Book to Page");
            }
            else if(searchHit.getType().equals("author")){
                logger.info("Creating Author,Mapping Author,Adding Author to Page");
            }
            logger.info(searchHit.getType());
        }

        List<FacetResult> facets = new ArrayList<FacetResult>();
        if (response.getFacets() != null) {
            for (Facet facet : response.getFacets()) {
                FacetResult facetResult = DefaultFacetMapper.parse(facet);
                if (facetResult != null) {
                    facets.add(facetResult);
                }
            }
        }

        return new FacetedPageImpl<T>((List<T>)content, pageable, totalHits, facets);

    }
});
```

---

<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 5, 2017, 10:59pm UTC](https://discuss.elastic.co/t/multi-type-search-using-java-api-more-specifically-spring-data-elasticsearch/47300/2 "2017-07-05T22:59:31Z")

</div>


