Elasticsearch Resources ======================= .. meta:: :description: Documentation on the ObjectRocket service's RESTful API for hosted Elasticsearch instances Get a list of your active Elasticsearch instances ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash GET /elasticsearch// Response: .. code-block:: json { "data": [ { "api_key": "", "caster": null, "connection_strings": { "public": { "http": "http://iad1-10713-0.es.objectrocket.com:10713,http://iad1-10713-1.es.objectrocket.com:10713,http://iad1-10713-2.es.objectrocket.com:10713,http://iad1-10713-3.es.objectrocket.com:10713", "https": "https://iad1-10713-0.es.objectrocket.com:20713,https://iad1-10713-1.es.objectrocket.com:20713,https://iad1-10713-2.es.objectrocket.com:20713,https://iad1-10713-3.es.objectrocket.com:20713", "kibana_http": "http://iad1-10713-kibana.es.objectrocket.com:10713", "kibana_https": "https://iad1-10713-kibana.es.objectrocket.com:20713", "transport": "iad1-10713-0.es.objectrocket.com:40713,iad1-10713-1.es.objectrocket.com:40713,iad1-10713-2.es.objectrocket.com:40713,iad1-10713-3.es.objectrocket.com:40713" }, "servicenet": { "http": "http://iad1-sn-10713-0.es.objectrocket.com:10713,http://iad1-sn-10713-1.es.objectrocket.com:10713,http://iad1-sn-10713-2.es.objectrocket.com:10713,http://iad1-sn-10713-3.es.objectrocket.com:10713", "https": "https://iad1-sn-10713-0.es.objectrocket.com:20713,https://iad1-sn-10713-1.es.objectrocket.com:20713,https://iad1-sn-10713-2.es.objectrocket.com:20713,https://iad1-sn-10713-3.es.objectrocket.com:20713", "transport": "iad1-sn-10713-0.es.objectrocket.com:40713,iad1-sn-10713-1.es.objectrocket.com:40713,iad1-sn-10713-2.es.objectrocket.com:40713,iad1-sn-10713-3.es.objectrocket.com:40713" } }, "created": "2017-02-10 22:58:54", "encrypted": false, "id": "", "name": "foobar", "plan": 4, "service": "elasticsearch", "settings": {}, "state": "COMPLETED", "type": "elasticsearch", "user": "", "version": "5.1.1", "zone": "US-East-IAD1" }, { } ] } Response Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - api_key - Not used in Elasticsearch clusters * - caster - ID for customers in a dedicated casters environment * - connection strings - Elasticsearch API, Elasticsearch transport, and Kibana connection strings for Rackspace ServiceNet and public interfaces. All strings given in http and https (secure) options where applicable * - created - Date and time that the cluster was cerated * - encrypted - Whether this cluster has at-rest-encryption enabled * - id - unique instance id for each instance * - name - The instance name. Use this for in the other commands * - plan - The instance storage size from plan size (i.e. 4,8,16,32,64,128,256,512) * - service - Will always be "elasticsearch" for elasticsearch instances * - settings - settings for ACL sync are listed here * - state - Indicates the build state of the current instance (i.e. REQUESTED, STARTED, COMPLETED) * - type - Type of instance. Will always be "elasticsearch" for Elasticsearch instances * - user - your unique internal user id number * - version - Elasticsearch version on this cluster * - zone - The ObjectRocket datacenter that this instance is deployed in Check the build status of an Elasticsearch cluster ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash GET /elasticsearch//build Response: .. code-block:: json { "data": { "action": "create", "build_finish_date": 1487021778493, "build_start_date": 1487021330107, "encrypted": false, "id": "", "login": "", "name": "new_instance", "phase": "INSTANCE_DEPLOYED", "plan": 4, "state": "COMPLETED", "updated_date": 1487021778493, "version": "5.1.1", "zone": "US-Dallas" } } Response Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - action - The action being performed on the instance * - build_finish_date - a timestamp for when build finished (in ms) * - build_start_date - a timestamp for when build started (in ms) * - encrypted - Whether this cluster has at-rest-encryption enabled * - id - unique instance id for each instance * - login - your login name for the ObjectRocket UI/API * - name - The instance name. Use this for in the other commands * - phase - Indicates the different phases of the build state * - plan - The instance storage size from plan size (i.e. 4,8,16,32,64,128,256,512) * - state - Indicates the build state of the current instance (i.e. REQUESTED, STARTED, COMPLETED) * - updated_date - a timestamp for the last time the instance state was updated (in ms) * - version - Elasticsearch version on this cluster * - zone - The ObjectRocket datacenter that this instance is deployed in List users for the elasticsearch instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash GET /elasticsearch//users/ Response: .. code-block:: json { "data": [ { "role": "kibana-only", "username": "foouser" }, { "role": "readonly", "username": "baruser" } ] } Response Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - role - The user's role. Can be "admin", "readonly", or "kibana-only" * - username - the username of the user Create a new user for the elasticsearch instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash POST /elasticsearch//users/ Request Body: .. code-block:: json { "username": "myuser", "password": "mytestp@ss", "role": "admin" } Request Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - username - (Required) username of the new user * - password - (Required) password of the new user * - role - (Required) The user's role. Can be "admin", "readonly", or "kibana-only" Response: .. code-block:: json { "data": { "role": "admin", "username": "myuser" } } Delete a user of the elasticsearch instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash DELETE /elasticsearch//users/ Request Body: .. code-block:: json { "username": "myuser" } Request Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - username - (Required) username of the user to delete Response: .. code-block:: json { "data": { "username": "myuser" } } Add a data node to the Elasticsearch cluster ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Adding a data node will impact your monthly subscription fees. See The ObjectRocket `pricing page `_ for more details. .. code-block:: bash POST /elasticsearch//data_nodes/ Request Body: .. code-block:: json { "count": 1 } Request Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - count - number of data nodes to add Response: .. code-block:: json { "data": "58a20bb9ffbbf821544090f7" } Display RocketScale Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can use the ObjectRocket API to display the current :ref:`Rocketscale :sup:® settings ` for an instance .. code-block:: bash GET /elasticsearch//rocketscale_settings/ Response: .. code-block:: json { "data": { "num_minutes_in_violation": 10, "max_node_limit": 12, "temp_disabled_window": 3600, "node_disk_usage_threshold": 87, "cooldown_time": 1800, "rocketscale_enabled": true, "jvm_threshold": 85 } } .. note:: There are two settings returned in the GET call that are used internally and not settable via the PATCH call. `temp_disabled_window` is for our support teams to temporarily deactivate RocketScale when needed. `jvm_threshold` is reserved for future use. Modify RocketScale Settings for an Instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash PATCH /elasticsearch//rocketscale_settings/ Request Body: .. code-block:: json { "rocketscale_enabled": true, "cooldown_time": 660, "node_disk_usage_threshold": 83, "max_node_limit": 10, "num_minutes_in_violation": 8 } Request Field Map: .. list-table:: :header-rows: 1 :stub-columns: 1 :class: compatibility * - Field - Usage * - rocketscale_enabled - (Required) boolean to determine whether RocketScale should be enabled or not * - cooldown_time - The amount of time in seconds to wait between checking node disk usage * - node_disk_usage_threshold - The percentage of storage usage that must be exceeded before RocketScale will try to add another node * - max_node_limit - The maximum number of nodes a cluster can have. Once this limit is hit, RocketScale will not try to add more nodes * - num_minutes_in_violation - The amount of time in minutes that a node must exceed the node_disk_usage_threshold before adding a node Response: .. code-block:: json { "data": { "num_minutes_in_violation": 8, "max_node_limit": 10, "temp_disabled_window": 3600, "node_disk_usage_threshold": 83, "cooldown_time": 660, "rocketscale_enabled": true, "jvm_threshold": 85 } } Display index stats ~~~~~~~~~~~~~~~~~~~ You can use the ObjectRocket API to gather information from the Elasticsearch stats APIs. This call returns data similar to an index /_stats/ call in Elasticsearch .. code-block:: bash GET /elasticsearch//indices/ Response: .. code-block:: json { "data": { "_all": { "primaries": { "completion": { "size_in_bytes": 0 }, "docs": { "count": 1, "deleted": 0 }, "fielddata": { "evictions": 0, "memory_size_in_bytes": 0 }, "flush": { "total": 1, "total_time_in_millis": 6 }, "get": { "current": 0, "exists_time_in_millis": 0, "exists_total": 0, "missing_time_in_millis": 0, "missing_total": 0, "time_in_millis": 0, "total": 0 }, "indexing": { "delete_current": 0, "delete_time_in_millis": 0, "delete_total": 0, "index_current": 0, "index_failed": 0, "index_time_in_millis": 55, "index_total": 1, "is_throttled": false, "noop_update_total": 0, "throttle_time_in_millis": 0 } }