Search in sources :

Example 1 with Slice

use of org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Slice in project spring-data-elasticsearch by spring-projects.

the class RequestFactory method reindexRequest.

/**
 * @since 4.4
 */
public org.elasticsearch.index.reindex.ReindexRequest reindexRequest(ReindexRequest reindexRequest) {
    final org.elasticsearch.index.reindex.ReindexRequest request = new org.elasticsearch.index.reindex.ReindexRequest();
    if (reindexRequest.getConflicts() != null) {
        request.setConflicts(reindexRequest.getConflicts().getEsName());
    }
    if (reindexRequest.getMaxDocs() != null) {
        request.setMaxDocs(reindexRequest.getMaxDocs());
    }
    // region source build
    final Source source = reindexRequest.getSource();
    request.setSourceIndices(source.getIndexes().getIndexNames());
    // source query will build from RemoteInfo if remote exist
    if (source.getQuery() != null && source.getRemote() == null) {
        request.setSourceQuery(getQuery(source.getQuery()));
    }
    if (source.getSize() != null) {
        request.setSourceBatchSize(source.getSize());
    }
    if (source.getRemote() != null) {
        Remote remote = source.getRemote();
        QueryBuilder queryBuilder = source.getQuery() == null ? QueryBuilders.matchAllQuery() : getQuery(source.getQuery());
        BytesReference query;
        try {
            XContentBuilder builder = XContentBuilder.builder(QUERY_CONTENT_TYPE).prettyPrint();
            query = BytesReference.bytes(queryBuilder.toXContent(builder, ToXContent.EMPTY_PARAMS));
        } catch (IOException e) {
            throw new IllegalArgumentException("Error parsing the source query content", e);
        }
        request.setRemoteInfo(new // 
        RemoteInfo(// 
        remote.getScheme(), // 
        remote.getHost(), // 
        remote.getPort(), // 
        remote.getPathPrefix(), // 
        query, // 
        remote.getUsername(), // 
        remote.getPassword(), // 
        Collections.emptyMap(), remote.getSocketTimeout() == null ? DEFAULT_SOCKET_TIMEOUT : // 
        timeValueSeconds(remote.getSocketTimeout().getSeconds()), remote.getConnectTimeout() == null ? DEFAULT_CONNECT_TIMEOUT : // 
        timeValueSeconds(remote.getConnectTimeout().getSeconds())));
    }
    final Slice slice = source.getSlice();
    if (slice != null) {
        request.getSearchRequest().source().slice(new SliceBuilder(slice.getId(), slice.getMax()));
    }
    final SourceFilter sourceFilter = source.getSourceFilter();
    if (sourceFilter != null) {
        request.getSearchRequest().source().fetchSource(sourceFilter.getIncludes(), sourceFilter.getExcludes());
    }
    // endregion
    // region dest build
    final Dest dest = reindexRequest.getDest();
    request.setDestIndex(dest.getIndex().getIndexName()).setDestRouting(dest.getRouting()).setDestPipeline(dest.getPipeline());
    final org.springframework.data.elasticsearch.annotations.Document.VersionType versionType = dest.getVersionType();
    if (versionType != null) {
        request.setDestVersionType(VersionType.fromString(versionType.name().toLowerCase(Locale.ROOT)));
    }
    final IndexQuery.OpType opType = dest.getOpType();
    if (opType != null) {
        request.setDestOpType(opType.name().toLowerCase(Locale.ROOT));
    }
    // endregion
    // region script build
    final ReindexRequest.Script script = reindexRequest.getScript();
    if (script != null) {
        request.setScript(new Script(DEFAULT_SCRIPT_TYPE, script.getLang(), script.getSource(), Collections.emptyMap()));
    }
    // endregion
    // region query parameters build
    final Duration timeout = reindexRequest.getTimeout();
    if (timeout != null) {
        request.setTimeout(timeValueSeconds(timeout.getSeconds()));
    }
    if (reindexRequest.getRefresh() != null) {
        request.setRefresh(reindexRequest.getRefresh());
    }
    if (reindexRequest.getRequireAlias() != null) {
        request.setRequireAlias(reindexRequest.getRequireAlias());
    }
    if (reindexRequest.getRequestsPerSecond() != null) {
        request.setRequestsPerSecond(reindexRequest.getRequestsPerSecond());
    }
    final Duration scroll = reindexRequest.getScroll();
    if (scroll != null) {
        request.setScroll(timeValueSeconds(scroll.getSeconds()));
    }
    if (reindexRequest.getWaitForActiveShards() != null) {
        request.setWaitForActiveShards(ActiveShardCount.parseString(reindexRequest.getWaitForActiveShards()));
    }
    if (reindexRequest.getSlices() != null) {
        request.setSlices(reindexRequest.getSlices());
    }
    // endregion
    return request;
}
Also used : Remote(org.springframework.data.elasticsearch.core.reindex.Remote) MoreLikeThisQueryBuilder(org.elasticsearch.index.query.MoreLikeThisQueryBuilder) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) Document(org.springframework.data.elasticsearch.core.document.Document) Source(org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Source) ReindexRequest(org.springframework.data.elasticsearch.core.reindex.ReindexRequest) BytesReference(org.elasticsearch.common.bytes.BytesReference) Script(org.elasticsearch.script.Script) Dest(org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Dest) Duration(java.time.Duration) IOException(java.io.IOException) SliceBuilder(org.elasticsearch.search.slice.SliceBuilder) Slice(org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Slice) XContentBuilder(org.elasticsearch.xcontent.XContentBuilder)

Aggregations

IOException (java.io.IOException)1 Duration (java.time.Duration)1 BytesReference (org.elasticsearch.common.bytes.BytesReference)1 MoreLikeThisQueryBuilder (org.elasticsearch.index.query.MoreLikeThisQueryBuilder)1 QueryBuilder (org.elasticsearch.index.query.QueryBuilder)1 Script (org.elasticsearch.script.Script)1 SliceBuilder (org.elasticsearch.search.slice.SliceBuilder)1 XContentBuilder (org.elasticsearch.xcontent.XContentBuilder)1 Document (org.springframework.data.elasticsearch.core.document.Document)1 ReindexRequest (org.springframework.data.elasticsearch.core.reindex.ReindexRequest)1 Dest (org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Dest)1 Slice (org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Slice)1 Source (org.springframework.data.elasticsearch.core.reindex.ReindexRequest.Source)1 Remote (org.springframework.data.elasticsearch.core.reindex.Remote)1