3e32dd985a
To support the `_recovery` API, the recovery process keeps track of current progress in a class called RecoveryState. This class currently have some issues, mostly around concurrency (see #6644 ). This PR cleans it up as well as other issues around it: - Make the Index subsection API cleaner: - remove redundant information - all calculation is done based on the underlying file map - clearer definition of what is what: total files, vs reused files (local files that match the source) vs recovered files (copied over). % based progress is reported based on recovered files only. - cleaned up json response to match other API (sadly this breaks the structure). We now properly report human values for dates and other units. - Add more robust unit testing - Detail flag was passed along as state (it's now a ToXContent param) - State lookup during reporting is now always done via the IndexShard , no more fall backs to many other classes. - Cleanup APIs around time and move the little computations to the state class as opposed to doing them out of the API I also improved error messages out of the REST testing infra for things I run into. Closes #6644 Closes #9811 |
||
---|---|---|
.. | ||
api | ||
test | ||
.gitignore | ||
LICENSE.txt | ||
README.markdown |
README.markdown
Elasticsearch REST API JSON specification
This repository contains a collection of JSON files which describe the Elasticsearch HTTP API.
Their purpose is to formalize and standardize the API, to facilitate development of libraries and integrations.
Example for the "Create Index" API:
{
"indices.create": {
"documentation": "http://www.elasticsearch.org/guide/reference/api/admin-indices-create-index/",
"methods": ["PUT", "POST"],
"url": {
"path": "/{index}",
"paths": ["/{index}"],
"parts": {
"index": {
"type" : "string",
"required" : true,
"description" : "The name of the index"
}
},
"params": {
"timeout": {
"type" : "time",
"description" : "Explicit operation timeout"
}
}
},
"body": {
"description" : "The configuration for the index (`settings` and `mappings`)"
}
}
}
The specification contains:
- The name of the API (
indices.create
), which usually corresponds to the client calls - Link to the documentation at http://elasticsearch.org
- List of HTTP methods for the endpoint
- URL specification: path, parts, parameters
- Whether body is allowed for the endpoint or not and its description
The methods
and url.paths
elements list all possible HTTP methods and URLs for the endpoint;
it is the responsibility of the developer to use this information for a sensible API on the target platform.
Utilities
The repository contains some utilities in the utils
directory:
- The
thor api:generate:spec
will generate the basic JSON specification from Java source code - The
thor api:generate:code
generates Ruby source code and tests from the specs, and can be extended to generate assets in another programming language
Run bundle install
and then thor list
in the utils folder.
The full command to generate the api spec is:
thor api:spec:generate --output=myfolder --elasticsearch=/path/to/es
License
This software is licensed under the Apache License, version 2 ("ALv2").