package crate.elasticsearch.action.reindex; import java.util.HashMap; import java.util.Map; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.collect.ImmutableMap; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.search.SearchParseElement; import org.elasticsearch.search.SearchParseException; import org.elasticsearch.search.fetch.FetchPhase; import org.elasticsearch.search.fetch.explain.ExplainParseElement; import org.elasticsearch.search.query.QueryPhase; import crate.elasticsearch.action.searchinto.SearchIntoContext; import crate.elasticsearch.action.searchinto.parser.AbstractSearchIntoParser; import crate.elasticsearch.action.searchinto.parser.ISearchIntoParser; /** * Parser for pay load given to _reindex action. */ public class ReindexParser extends AbstractSearchIntoParser implements ISearchIntoParser { private final ImmutableMap<String, SearchParseElement> elementParsers; @Inject public ReindexParser(QueryPhase queryPhase, FetchPhase fetchPhase) { Map<String, SearchParseElement> elementParsers = new HashMap<String, SearchParseElement>(); elementParsers.putAll(queryPhase.parseElements()); elementParsers.put("explain", new ExplainParseElement()); this.elementParsers = ImmutableMap.copyOf(elementParsers); } @Override protected ImmutableMap<String, SearchParseElement> getElementParsers() { return elementParsers; } @Override public void parseSource(SearchIntoContext context, BytesReference source) throws SearchParseException { context.fieldNames().add("_id"); context.fieldNames().add("_source"); context.outputNames().put("_id", "_id"); context.outputNames().put("_source", "_source"); super.parseSource(context, source); } }