All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.euler.elasticsearch.ElasticsearchMetadataTask Maven / Gradle / Ivy

There is a newer version: 0.10.0
Show newest version
package com.github.euler.elasticsearch;

import java.util.Objects;

import org.elasticsearch.client.RestHighLevelClient;

import com.github.euler.common.AbstractBatchTask;
import com.github.euler.common.CommonContext;
import com.github.euler.core.JobTaskToProcess;
import com.github.euler.elasticsearch.req.ElasticSearchRequestFactory;
import com.github.euler.elasticsearch.req.InsertRequestFactory;
import com.github.euler.tika.FlushConfig;
import com.github.euler.tika.MetadataBatch;

public class ElasticsearchMetadataTask extends AbstractBatchTask {

    private ElasticsearchMetadataTask(String name, String index, RestHighLevelClient client, FlushConfig flushConfig, ElasticSearchRequestFactory requestFactory) {
        super(name, () -> new MetadataBatch(new ElasticsearchMetadataSink(client, index, flushConfig, requestFactory)));
    }

    @Override
    public boolean accept(JobTaskToProcess msg) {
        return msg.ctx.context(CommonContext.INDEXABLE, true);
    }

    public static Builder builder(String name, RestHighLevelClient client) {
        return new Builder(name, client);
    }

    public static class Builder {

        private String name;
        private String index = null;
        private RestHighLevelClient client;
        private FlushConfig flushConfig = new FlushConfig();
        private ElasticSearchRequestFactory requestFactory = new InsertRequestFactory();

        private Builder(String name, RestHighLevelClient client) {
            super();
            this.name = name;
            this.client = client;
        }

        public String getName() {
            return name;
        }

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public String getIndex() {
            return index;
        }

        public Builder setIndex(String index) {
            this.index = index;
            return this;
        }

        public RestHighLevelClient getClient() {
            return client;
        }

        public Builder setClient(RestHighLevelClient client) {
            this.client = client;
            return this;
        }

        public FlushConfig getFlushConfig() {
            return flushConfig;
        }

        public Builder setFlushConfig(FlushConfig flushConfig) {
            this.flushConfig = flushConfig;
            return this;
        }

        public ElasticSearchRequestFactory getRequestFactory() {
            return requestFactory;
        }

        public Builder setRequestFactory(ElasticSearchRequestFactory requestFactory) {
            this.requestFactory = requestFactory;
            return this;
        }

        public ElasticsearchMetadataTask build() {
            Objects.requireNonNull(name, () -> "name is required");
            Objects.requireNonNull(client, () -> "client is required");
            Objects.requireNonNull(flushConfig, () -> "flushConfig is required");
            Objects.requireNonNull(requestFactory, () -> "requestFactory is required");
            return new ElasticsearchMetadataTask(name, index, client, flushConfig, requestFactory);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy