protected void createAliasIfNotExist(CloudSolrClient client, String collectionName, String aliasName) { Aliases aliases = client.getZkStateReader().getAliases(); Map<String, String> aliasCollectionMap = aliases.getCollectionAliasMap(); if (!aliasCollectionMap.containsKey(aliasName)) { try { new CollectionAdminRequest.CreateAlias().setAliasName(aliasName) .setAliasedCollections(collectionName).process(client); } catch (SolrServerException e) { throw ExceptionHelper.refineException(e); } catch (IOException e) { throw ExceptionHelper.refineException(e); } } }
try { primaryCloudClient.connect(); Aliases aliases = primaryCloudClient.getZkStateReader().getAliases(); Map<String, String> aliasCollectionMap = aliases.getCollectionAliasMap(); if (aliasCollectionMap == null || !aliasCollectionMap.containsKey(primaryCloudClient.getDefaultCollection())
List<String> collectionNames = listResponse.get("collections") == null ? collectionNames = new ArrayList<>() : (List<String>) listResponse.get("collections"); Aliases aliases = primary.getZkStateReader().getAliases(); Map<String, String> aliasCollectionMap = aliases.getCollectionAliasMap(); aliases = primary.getZkStateReader().getAliases(); aliasCollectionMap = aliases.getCollectionAliasMap();
@Override public List<String> resolveAlias(String alias) { return zkStateReader.getAliases().resolveAliases(alias); // if not an alias, returns itself }
public static Slice[] getSlices(String collectionName, ZkStateReader zkStateReader, boolean checkAlias) throws IOException { ClusterState clusterState = zkStateReader.getClusterState(); Map<String, DocCollection> collectionsMap = clusterState.getCollectionsMap(); //TODO we should probably split collection by comma to query more than one // which is something already supported in other parts of Solr // check for alias or collection List<String> collections = checkAlias ? zkStateReader.getAliases().resolveAliases(collectionName) // if not an alias, returns collectionName : Collections.singletonList(collectionName); // Lookup all actives slices for these collections List<Slice> slices = collections.stream() .map(collectionsMap::get) .filter(Objects::nonNull) .flatMap(docCol -> Arrays.stream(docCol.getActiveSlicesArr())) .collect(Collectors.toList()); if (!slices.isEmpty()) { return slices.toArray(new Slice[slices.size()]); } // Check collection case insensitive for(String collectionMapKey : collectionsMap.keySet()) { if(collectionMapKey.equalsIgnoreCase(collectionName)) { return collectionsMap.get(collectionMapKey).getActiveSlicesArr(); } } throw new IOException("Slices not found for " + collectionName); }
private Set<String> getCollectionNames(ClusterState clusterState, String collection) { // Extract each comma separated collection name and store in a List. List<String> rawCollectionsList = StrUtils.splitSmart(collection, ",", true); Set<String> collectionNames = new HashSet<>(); // validate collections for (String collectionName : rawCollectionsList) { if (!clusterState.getCollections().contains(collectionName)) { Aliases aliases = zkStateReader.getAliases(); String alias = aliases.getCollectionAlias(collectionName); if (alias != null) { List<String> aliasList = StrUtils.splitSmart(alias, ",", true); collectionNames.addAll(aliasList); continue; } throw new SolrException(ErrorCode.BAD_REQUEST, "Collection not found: " + collectionName); } collectionNames.add(collectionName); } return collectionNames; }
Aliases aliases = zkStateReader.getAliases(); if(aliases != null) { Map<String, String> collectionAliases = aliases.getCollectionAliasMap();