The field capabilities API allows for retrieving the capabilities of fields across multiple indices.
FieldCapabilitiesRequest contains a list of fields to get capabilities for,
plus an optional list of target indices. If no indices are provided, the request
runs on all indices.
Note that fields parameter supports wildcard notation. For example, providing
will cause all fields that match the expression to be returned.
FieldCapabilitiesRequest request = new FieldCapabilitiesRequest() .fields("user") .indices("posts", "authors", "contributors");
fieldCaps method executes the request synchronously:
FieldCapabilitiesResponse response = client.fieldCaps(request, RequestOptions.DEFAULT);
fieldCapsAsync method executes the request asynchronously,
calling the provided
ActionListener when the response is ready:
The asynchronous method does not block and returns immediately. Once the request
ActionListener is called back using the
if the execution successfully completed or using the
onFailure method if
A typical listener for
FieldCapabilitiesResponse is constructed as follows:
For each requested field, the returned
FieldCapabilitiesResponse contains its type
and whether or not it can be searched or aggregated on. The response also gives
information about how each index contributes to the field’s capabilities.
Map<String, FieldCapabilities> userResponse = response.getField("user"); FieldCapabilities textCapabilities = userResponse.get("keyword"); boolean isSearchable = textCapabilities.isSearchable(); boolean isAggregatable = textCapabilities.isAggregatable(); String indices = textCapabilities.indices(); String nonSearchableIndices = textCapabilities.nonSearchableIndices(); String nonAggregatableIndices = textCapabilities.nonAggregatableIndices();
A map with entries for the field’s possible types, in this case
All indices where the
The subset of these indices where the
Another subset of these indices where the