fair-search/fairsearch-elasticsearch-plugin

View on GitHub
src/main/java/com/purbon/search/fair/rest/RestMTableStore.java

Summary

Maintainability
A
0 mins
Test Coverage
package com.purbon.search.fair.rest;

import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.client.node.NodeClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.rest.BaseRestHandler;
import org.elasticsearch.rest.RestController;
import org.elasticsearch.rest.RestRequest;
import org.elasticsearch.rest.action.RestStatusToXContentListener;

import java.io.IOException;

import static com.purbon.search.fair.ModelStore.ES_TYPE;
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
import static org.elasticsearch.index.query.QueryBuilders.termQuery;

public class RestMTableStore extends FairRestBaseHandler {

    private final String type;


    public RestMTableStore(Settings settings, RestController controller, String type) {
        super(settings);
        this.type = type;
        controller.registerHandler(RestRequest.Method.GET, "/_fs/_mtable", this);

    }

    @Override
    public String getName() {
        return "MTable store management";
    }

    @Override
    protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException {
        if (request.method() == RestRequest.Method.HEAD || request.method() == RestRequest.Method.GET) {
            return search(client, indexName, request);
        } else {
            throw new ElasticsearchException("Invalid request type");
        }
    }

    private RestChannelConsumer search(NodeClient client, String indexName, RestRequest request) {

        int from = request.paramAsInt("from", 0);
        int size = request.paramAsInt("size", 20);
        MatchAllQueryBuilder qb = new MatchAllQueryBuilder();

        return (channel) -> client.prepareSearch(indexName)
                .setTypes(type)
                .setQuery(qb)
                .setSize(size)
                .setFrom(from)
                .execute(new RestStatusToXContentListener<>(channel));

    }

}