add (ES native) aggregations to search result
This commit is contained in:
parent
db6d67a91a
commit
7f8edfab0f
4 changed files with 31 additions and 12 deletions
|
@ -1,5 +1,7 @@
|
||||||
package org.xbib.elx.api;
|
package org.xbib.elx.api;
|
||||||
|
|
||||||
|
import org.elasticsearch.search.aggregations.Aggregations;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface SearchResult {
|
public interface SearchResult {
|
||||||
|
@ -9,4 +11,6 @@ public interface SearchResult {
|
||||||
long getTook();
|
long getTook();
|
||||||
|
|
||||||
List<SearchDocument> getDocuments();
|
List<SearchDocument> getDocuments();
|
||||||
|
|
||||||
|
Aggregations getAggregations();
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,9 @@ public abstract class AbstractSearchClient extends AbstractBasicClient implement
|
||||||
}
|
}
|
||||||
return isempty ?
|
return isempty ?
|
||||||
Optional.empty() :
|
Optional.empty() :
|
||||||
Optional.of(new DefaultSearchResult(searchResponse.getHits(), searchResponse.getTook().getMillis()));
|
Optional.of(new DefaultSearchResult(searchResponse.getHits(),
|
||||||
|
searchResponse.getAggregations(),
|
||||||
|
searchResponse.getTook().getMillis()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -249,7 +251,9 @@ public abstract class AbstractSearchClient extends AbstractBasicClient implement
|
||||||
condition, lastAction), false)
|
condition, lastAction), false)
|
||||||
.onClose(responseStream::close)
|
.onClose(responseStream::close)
|
||||||
.flatMap(searchResponse ->
|
.flatMap(searchResponse ->
|
||||||
new DefaultSearchResult(searchResponse.getHits(), searchResponse.getTook().getMillis()).getDocuments().stream());
|
new DefaultSearchResult(searchResponse.getHits(),
|
||||||
|
searchResponse.getAggregations(),
|
||||||
|
searchResponse.getTook().getMillis()).getDocuments().stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,6 +2,7 @@ package org.xbib.elx.common;
|
||||||
|
|
||||||
import org.elasticsearch.search.SearchHit;
|
import org.elasticsearch.search.SearchHit;
|
||||||
import org.elasticsearch.search.SearchHits;
|
import org.elasticsearch.search.SearchHits;
|
||||||
|
import org.elasticsearch.search.aggregations.Aggregations;
|
||||||
import org.xbib.elx.api.SearchDocument;
|
import org.xbib.elx.api.SearchDocument;
|
||||||
import org.xbib.elx.api.SearchResult;
|
import org.xbib.elx.api.SearchResult;
|
||||||
|
|
||||||
|
@ -12,13 +13,31 @@ public class DefaultSearchResult implements SearchResult {
|
||||||
|
|
||||||
private final SearchHits searchHits;
|
private final SearchHits searchHits;
|
||||||
|
|
||||||
|
private final Aggregations aggregations;
|
||||||
|
|
||||||
private final long took;
|
private final long took;
|
||||||
|
|
||||||
public DefaultSearchResult(SearchHits searchHits, long took) {
|
public DefaultSearchResult(SearchHits searchHits,
|
||||||
|
Aggregations aggregations,
|
||||||
|
long took) {
|
||||||
this.searchHits = searchHits;
|
this.searchHits = searchHits;
|
||||||
|
this.aggregations = aggregations;
|
||||||
this.took = took;
|
this.took = took;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SearchDocument> getDocuments() {
|
||||||
|
List<SearchDocument> list = new ArrayList<>();
|
||||||
|
for (SearchHit searchHit : searchHits.getHits()) {
|
||||||
|
list.add(new DefaultSearchDocument(searchHit));
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Aggregations getAggregations() {
|
||||||
|
return aggregations;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getTotal() {
|
public long getTotal() {
|
||||||
return searchHits.getTotalHits().value;
|
return searchHits.getTotalHits().value;
|
||||||
|
@ -29,12 +48,4 @@ public class DefaultSearchResult implements SearchResult {
|
||||||
return took;
|
return took;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<SearchDocument> getDocuments() {
|
|
||||||
List<SearchDocument> list = new ArrayList<>();
|
|
||||||
for (SearchHit searchHit : searchHits.getHits()) {
|
|
||||||
list.add(new DefaultSearchDocument(searchHit));
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
group = org.xbib
|
group = org.xbib
|
||||||
name = elx
|
name = elx
|
||||||
version = 7.10.2.14
|
version = 7.10.2.15
|
||||||
|
|
||||||
gradle.wrapper.version = 6.6.1
|
gradle.wrapper.version = 6.6.1
|
||||||
xbib-metrics.version = 2.2.0
|
xbib-metrics.version = 2.2.0
|
||||||
|
|
Loading…
Reference in a new issue