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

org.elasticsearch.action.suggest.SuggestRequest Maven / Gradle / Ivy

package org.elasticsearch.action.suggest;

import java.io.IOException;
import java.util.Arrays;

import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.ValidateActions;
import org.elasticsearch.action.support.broadcast.BroadcastOperationRequest;
import org.elasticsearch.action.support.broadcast.BroadcastOperationThreading;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;

public class SuggestRequest extends BroadcastOperationRequest {

    private String[] types = org.elasticsearch.common.Strings.EMPTY_ARRAY;

    private int size = 10;
    private String field;
    private float similarity = 1.0f;
    private String term;

    public SuggestRequest() {
    }

    public SuggestRequest(String... indices) {
        super(indices);
    }

    public int size() {
        return size;
    }

    public void size(int size) {
        this.size = size;
    }

    public String field() {
        return field;
    }

    public void field(String field) {
        this.field = field;
    }

    public float similarity() {
        return similarity;
    }

    public void similarity(float similarity) {
        this.similarity = similarity;
    }

    public String term() {
        return term;
    }

    public void term(String term) {
        this.term = term;
    }

    @Override public ActionRequestValidationException validate() {
        ActionRequestValidationException validationException = super.validate();
        if (field == null || field.length() == 0) {
            validationException = ValidateActions.addValidationError("No suggest field specified", validationException);
        }
        if (term == null || term.length() == 0) {
            validationException = ValidateActions.addValidationError("No query term specified", validationException);
        }
        return validationException;
    }

    /**
     * The types of documents the query will run against. Defaults to all types.
     */
    String[] types() {
        return types;
    }

    /**
     * The types of documents the query will run against. Defaults to all types.
     */
    public SuggestRequest types(String... types) {
        this.types = types;
        return this;
    }

    @Override public void readFrom(StreamInput in) throws IOException {
        super.readFrom(in);

        size = in.readVInt();
        similarity = in.readFloat();
        field = in.readString();
        term = in.readString();

        int typesSize = in.readVInt();
        if (typesSize > 0) {
            types = new String[typesSize];
            for (int i = 0; i < typesSize; i++) {
                types[i] = in.readString();
            }
        }
    }

    @Override public void writeTo(StreamOutput out) throws IOException {
        super.writeTo(out);

        out.writeVInt(size);
        out.writeFloat(similarity);
        out.writeString(field);
        out.writeString(term);

        out.writeVInt(types.length);
        for (String type : types) {
            out.writeString(type);
        }
    }

    @Override public String toString() {
        return String.format("[%s] %s, field[%s], term[%s], size[%s], similarity[%s]", Arrays.toString(indices), Arrays.toString(types), field, term, size, similarity);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy