
io.polyglotted.eswrapper.query.ResultBuilder Maven / Gradle / Ivy
package io.polyglotted.eswrapper.query;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.gson.Gson;
import io.polyglotted.pgmodel.search.IndexKey;
import io.polyglotted.pgmodel.search.SimpleDoc;
import org.elasticsearch.action.search.SearchResponse;
import java.util.List;
import static com.google.common.collect.ImmutableMap.copyOf;
import static com.google.common.collect.Iterables.transform;
public interface ResultBuilder {
List buildFrom(SearchResponse response);
ResultBuilder> NullBuilder = response -> ImmutableList.of();
ResultBuilder IndexKeyBuilder = response -> ImmutableList.copyOf(transform(
response.getHits(), ModelQueryUtil::keyFrom));
ResultBuilder SimpleDocBuilder = response -> ImmutableList.copyOf(transform(response.getHits(), hit -> {
ImmutableMap source = (hit.getSource() == null) ? ImmutableMap.of() : copyOf(hit.getSource());
return new SimpleDoc(ModelQueryUtil.keyFrom(hit), source);
}));
static ResultBuilder SimpleObjectBuilder(final Gson gson, Class clazz) {
return response -> ImmutableList.copyOf(transform(response.getHits(),
hit -> hit.isSourceEmpty() ? null : gson.fromJson(hit.sourceAsString(), clazz)));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy