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

org.elasticsearch.hadoop.serialization.dto.IndicesAliases Maven / Gradle / Ivy

There is a newer version: 7.0.0-alpha2
Show newest version
/*
 * Licensed to Elasticsearch under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch licenses this file to you under
 * the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.elasticsearch.hadoop.serialization.dto;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class IndicesAliases {
    private final Map > indices;

    private IndicesAliases(Map > indices) {
        this.indices = indices;
    }

    public Map getAliases(String index) {
        return indices.get(index);
    }

    public Map> getAll() {
        return indices;
    }

    /**
     * Parse an aliases response into an instance of {@link IndicesAliases}
     *
     * Example of response from server:
     * 
     * {
     *   "index1" : {
     *     "aliases" : {
     *       "alias1" : {
     *         "filter" : {
     *           "term" : {
     *             "user" : "kimchy"
     *           }
     *         },
     *         "index_routing" : "1",
     *         "search_routing" : "1",
     *         "is_write_index" : true
     *       },
     *       "alias2" : {
     *         "search_routing" : "5"
     *       }
     *     }
     *   },
     *   "index2" : {
     *     "aliases" : {
     *       ...
     *     }
     *   }
     * }
     * 
* * @param resp JSON Response in the form of a Java Map */ public static IndicesAliases parse(Map resp) { final Map > indices = new HashMap > (); for (Map.Entry index : resp.entrySet()) { final Map metadata = (Map) index.getValue(); final Map > aliases = (Map >) metadata.get("aliases"); final Map indexAliases = new HashMap (); indices.put(index.getKey(), indexAliases); for (Map.Entry > entry : aliases.entrySet()) { String name = entry.getKey(); Map aliasMetadata = entry.getValue(); String searchRouting = null; String indexRouting = null; Map filter = null; boolean isWriteIndex = false; if (aliasMetadata.containsKey("search_routing")) { searchRouting = (String) aliasMetadata.get("search_routing"); } if (aliasMetadata.containsKey("index_routing")) { indexRouting = (String) aliasMetadata.get("index_routing"); } if (aliasMetadata.containsKey("filter")) { filter = (Map) aliasMetadata.get("filter"); } if (aliasMetadata.containsKey("is_write_index")) { isWriteIndex = (Boolean) aliasMetadata.get("is_write_index"); } Alias alias = new Alias(name, searchRouting, indexRouting, filter, isWriteIndex); indexAliases.put(alias.name, alias); } } return new IndicesAliases(Collections.unmodifiableMap(indices)); } public static class Alias { private final String name; private final String searchRouting; private final String indexRouting; private final Map filter; private final boolean isWriteIndex; Alias(String name, String searchRouting, String indexRouting, Map filter, boolean isWriteIndex) { this.name = name; this.searchRouting = searchRouting; this.indexRouting = indexRouting; this.filter = filter; this.isWriteIndex = isWriteIndex; } public String getName() { return name; } public String getSearchRouting() { return searchRouting; } public String getIndexRouting() { return indexRouting; } public Map getFilter() { return filter; } public boolean isWriteIndex() { return isWriteIndex; } @Override public String toString() { return "Alias{" + "name='" + name + '\'' + ", searchRouting='" + searchRouting + '\'' + ", indexRouting='" + indexRouting + '\'' + ", filter=" + filter + ", isWriteAlias=" + isWriteIndex + '}'; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy