@Override public AliasFilter rewrite(QueryRewriteContext context) throws IOException { QueryBuilder queryBuilder = this.filter; if (queryBuilder != null) { QueryBuilder rewrite = Rewriteable.rewrite(queryBuilder, context); if (rewrite != queryBuilder) { return new AliasFilter(rewrite, aliases); } } return this; }
builder.startObject(index); AliasFilter aliasFilter = entry.getValue(); String[] aliases = aliasFilter.getAliases(); if (aliases.length > 0) { if (aliasFilter.getQueryBuilder() != null) { // might be null if we include non-filtering aliases builder.field("filter"); aliasFilter.getQueryBuilder().toXContent(builder, params);
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeVInt(groups.length); for (ClusterSearchShardsGroup response : groups) { response.writeTo(out); } out.writeVInt(nodes.length); for (DiscoveryNode node : nodes) { node.writeTo(out); } if (out.getVersion().onOrAfter(Version.V_5_1_1)) { out.writeVInt(indicesAndFilters.size()); for (Map.Entry<String, AliasFilter> entry : indicesAndFilters.entrySet()) { out.writeString(entry.getKey()); entry.getValue().writeTo(out); } } }
final String[] aliases = indexNameExpressionResolver.indexAliases(clusterState, index, aliasMetadata -> true, true, request.indices()); indicesAndFilters.put(index, new AliasFilter(aliasFilter.getQueryBuilder(), aliases));
AliasFilter rewrite(QueryRewriteContext context) throws IOException { QueryBuilder queryBuilder = reparseFilter(context); if (queryBuilder != null) { return new AliasFilter(QueryBuilder.rewriteQuery(queryBuilder, context), aliases); } return new AliasFilter(filter, aliases); }
assert aliasFilter != null : "alias filter must not be null for index: " + shardId.getIndex(); String[] aliases = aliasFilter.getAliases(); String[] finalIndices = aliases.length == 0 ? new String[] {shardId.getIndexName()} : aliases;
@Override public QueryBuilder filteringAliases() { return aliasFilter.getQueryBuilder(); }
@Override public void rewrite(QueryShardContext context) throws IOException { SearchSourceBuilder source = this.source; SearchSourceBuilder rewritten = null; aliasFilter = aliasFilter.rewrite(context); while (rewritten != source) { rewritten = source.rewrite(context); source = rewritten; } this.source = source; }
final String[] aliases = indexNameExpressionResolver.indexAliases(clusterState, index, aliasMetadata -> true, true, request.indices()); indicesAndFilters.put(index, new AliasFilter(aliasFilter.getQueryBuilder(), aliases));
assert aliasFilter != null : "alias filter must not be null for index: " + shardId.getIndex(); String[] aliases = aliasFilter.getAliases(); String[] finalIndices = aliases.length == 0 ? new String[] {shardId.getIndexName()} : aliases;
final QueryBuilder queryBuilder = request.getAliasFilter().getQueryBuilder(); aliasFilter = queryBuilder == null ? null : queryBuilder.toFilter(queryShardContext); } catch (IOException e) {
public ClusterSearchShardsResponse(StreamInput in) throws IOException { super(in); groups = new ClusterSearchShardsGroup[in.readVInt()]; for (int i = 0; i < groups.length; i++) { groups[i] = ClusterSearchShardsGroup.readSearchShardsGroupResponse(in); } nodes = new DiscoveryNode[in.readVInt()]; for (int i = 0; i < nodes.length; i++) { nodes[i] = new DiscoveryNode(in); } if (in.getVersion().onOrAfter(Version.V_5_1_1)) { int size = in.readVInt(); indicesAndFilters = new HashMap<>(); for (int i = 0; i < size; i++) { String index = in.readString(); AliasFilter aliasFilter = new AliasFilter(in); indicesAndFilters.put(index, aliasFilter); } } else { indicesAndFilters = null; } }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeNamedWriteable(query); out.writeVInt(types.length); for (String type : types) { out.writeString(type); } filteringAliases.writeTo(out); out.writeBoolean(explain); out.writeBoolean(rewrite); out.writeVLong(nowInMillis); } }
builder.startObject(index); AliasFilter aliasFilter = entry.getValue(); String[] aliases = aliasFilter.getAliases(); if (aliases.length > 0) { if (aliasFilter.getQueryBuilder() != null) { // might be null if we include non-filtering aliases builder.field("filter"); aliasFilter.getQueryBuilder().toXContent(builder, params);
final String[] aliases = indexNameExpressionResolver.indexAliases(clusterState, index, aliasMetadata -> true, true, request.indices()); indicesAndFilters.put(index, new AliasFilter(aliasFilter.getQueryBuilder(), aliases));
assert aliasFilter != null : "alias filter must not be null for index: " + shardId.getIndex(); String[] aliases = aliasFilter.getAliases(); String[] finalIndices = aliases.length == 0 ? new String[] {shardId.getIndexName()} : aliases;
final QueryBuilder queryBuilder = request.getAliasFilter().getQueryBuilder(); aliasFilter = queryBuilder == null ? null : queryBuilder.toFilter(queryShardContext); } catch (IOException e) {
public AliasFilter buildAliasFilter(ClusterState state, String index, String... expressions) { /* Being static, parseAliasFilter doesn't have access to whatever guts it needs to parse a query. Instead of passing in a bunch * of dependencies we pass in a function that can perform the parsing. */ CheckedFunction<byte[], QueryBuilder, IOException> filterParser = bytes -> { try (XContentParser parser = XContentFactory.xContent(bytes) .createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, bytes)) { return parseInnerQueryBuilder(parser); } }; String[] aliases = indexNameExpressionResolver.filteringAliases(state, index, expressions); IndexMetaData indexMetaData = state.metaData().index(index); return new AliasFilter(ShardSearchRequest.parseAliasFilter(filterParser, indexMetaData, aliases), aliases); }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(type); out.writeString(id); out.writeOptionalString(routing); out.writeOptionalString(preference); out.writeNamedWriteable(query); filteringAlias.writeTo(out); out.writeOptionalStringArray(storedFields); out.writeOptionalWriteable(fetchSourceContext); out.writeVLong(nowInMillis); }
builder.startObject(index); AliasFilter aliasFilter = entry.getValue(); String[] aliases = aliasFilter.getAliases(); if (aliases.length > 0) { if (aliasFilter.getQueryBuilder() != null) { // might be null if we include non-filtering aliases builder.field("filter"); aliasFilter.getQueryBuilder().toXContent(builder, params);