OpenSearch/rest-api-spec
Michael McCandless 856b294441 Core: let Lucene kick off merges
Today, Elasticsearch has a separate merge thread pool checking once
per second (by default) if any merges are necessary, but this is no
longer necessary since we can and do now tell Lucene's
ConcurrentMergeScheduler never to "hard pause" threads when merges
fall behind, since we do our own index throttling.

This change goes back to letting Lucene launch merges as needed, and
removes these two expert settings:

  index.merge.force_async_merge
  index.merge.async_interval

Now merges kick off immediately instead of waiting up to 1 second
before running.

Closes #8643
2014-11-25 04:13:57 -05:00
..
api Spec: Fixes a few locations of the params array in JSON specification 2014-11-24 20:43:33 +01:00
test Core: let Lucene kick off merges 2014-11-25 04:13:57 -05:00
utils [UTIL] Fixed an error for the `--output` parameter in `thor api:spec:generate` 2013-12-05 17:36:54 +01:00
.gitignore Initial commit (blank repository) 2013-05-23 17:56:22 +02:00
LICENSE.txt [SETUP] Added README and LICENSE 2013-05-24 12:06:08 +02:00
README.markdown fix mention of Apache License, version 2. 2014-11-08 19:14:51 +01:00

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").