Stream<EntryBean> beanStream = elasticsearchMapper.findAll(
client.prepareSearch("blog")
.setTypes("entry")
.addSort("title", SortOrder.ASC),
3,
EntryBean.class
);
beanStream.map(EntryBean::getTitle).forEach(System.out::println);
Tiny elasticsearch mapper for Java. Mapping search results to Java objects.
You can install this library from maven central.
See http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22me.geso.esmapper%22
Future<Long> countFuture = elasticsearchMapper.count(
client.prepareSearch("blog")
.setTypes("entry")
);
Count search results.
This method automatically adds searchRequestBuilder.setSize(0)
.
Returns the number of total hit rows.
public <T> Stream<T> findAll(SearchRequestBuilder searchRequestBuilder, int scrollSize, Class<T> klass) throws JsonParseException, JsonMappingException
Stream<EntryBean> beanStream = elasticsearchMapper.findAll(
client.prepareSearch("blog")
.setTypes("entry")
.addSort("title", SortOrder.ASC),
3,
EntryBean.class
);
- searchRequestBuilder is search query.
- scrollSize is scroll window size for each request.
- klass is a mapping class type.
Get all results from search query using scrolling.
Throws JsonParseException and JsonMappingException if there's JSON mapping exception.
Returns search result stream.
This method throws RuntimeException if TODO: We shouldn't throw it.
public <T> Future<Page<T>> findPagination(int page, int entriesPerPage, SearchRequestBuilder searchRequestBuilder, Class<T> klass)
Page<EntryBean> page = elasticsearchMapper.findPagination(
1,
3,
client.prepareSearch("blog")
.setTypes("entry")
.addSort("title", SortOrder.ASC),
EntryBean.class
).get();
Find results with pagination.
- page is current page number.
- entriesPerPage is the number of entries per page.
- searchRequestBuilder is a search request.
- klass is a mapping class type.
Returns search results. Page<T>
object contains total number of hits and rows information.
public <T> Future<LoadMore<T>> findLoadMore(int entriesPerPage, SearchRequestBuilder searchRequestBuilder, Class<T> klass)
LoadMore<EntryBean> page = elasticsearchMapper.findLoadMore(
3,
client.prepareSearch("blog")
.setTypes("entry")
.addSort("title", SortOrder.ASC)
.setQuery(QueryBuilders.rangeQuery("i").gt(2)),
EntryBean.class
).get();
Find rows for "Load more" style navigation.
- entriesPerPage is the number of rows in per page.
- searchRequestBuilder is query object.
- klass is mapping type.
Returns search results. You can call hasNext()
and getRows()
method via page object.
Future<Optional<EntryBean>> optionalFuture = elasticsearchMapper.findFirst(
client.prepareSearch("blog")
.setTypes("entry")
.setQuery(QueryBuilders.termQuery("_id", indexResponses.get(4).getId())),
EntryBean.class
);
Find first element and map to Optional.
- searchRequestBuilder is query object.
- klass is mapping type.