elasticsearch-api 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +13 -0
  5. data/README.md +160 -0
  6. data/Rakefile +62 -0
  7. data/elasticsearch-api.gemspec +51 -0
  8. data/lib/elasticsearch-api +1 -0
  9. data/lib/elasticsearch/api.rb +23 -0
  10. data/lib/elasticsearch/api/actions/bulk.rb +71 -0
  11. data/lib/elasticsearch/api/actions/cluster/get_settings.rb +21 -0
  12. data/lib/elasticsearch/api/actions/cluster/health.rb +50 -0
  13. data/lib/elasticsearch/api/actions/cluster/node_hot_threads.rb +46 -0
  14. data/lib/elasticsearch/api/actions/cluster/node_info.rb +59 -0
  15. data/lib/elasticsearch/api/actions/cluster/node_shutdown.rb +36 -0
  16. data/lib/elasticsearch/api/actions/cluster/node_stats.rb +77 -0
  17. data/lib/elasticsearch/api/actions/cluster/put_settings.rb +28 -0
  18. data/lib/elasticsearch/api/actions/cluster/reroute.rb +44 -0
  19. data/lib/elasticsearch/api/actions/cluster/state.rb +47 -0
  20. data/lib/elasticsearch/api/actions/count.rb +46 -0
  21. data/lib/elasticsearch/api/actions/create.rb +34 -0
  22. data/lib/elasticsearch/api/actions/delete.rb +61 -0
  23. data/lib/elasticsearch/api/actions/delete_by_query.rb +62 -0
  24. data/lib/elasticsearch/api/actions/exists.rb +51 -0
  25. data/lib/elasticsearch/api/actions/explain.rb +71 -0
  26. data/lib/elasticsearch/api/actions/get.rb +59 -0
  27. data/lib/elasticsearch/api/actions/get_source.rb +59 -0
  28. data/lib/elasticsearch/api/actions/index.rb +81 -0
  29. data/lib/elasticsearch/api/actions/indices/analyze.rb +63 -0
  30. data/lib/elasticsearch/api/actions/indices/clear_cache.rb +69 -0
  31. data/lib/elasticsearch/api/actions/indices/close.rb +35 -0
  32. data/lib/elasticsearch/api/actions/indices/create.rb +83 -0
  33. data/lib/elasticsearch/api/actions/indices/delete.rb +48 -0
  34. data/lib/elasticsearch/api/actions/indices/delete_alias.rb +37 -0
  35. data/lib/elasticsearch/api/actions/indices/delete_mapping.rb +26 -0
  36. data/lib/elasticsearch/api/actions/indices/delete_template.rb +33 -0
  37. data/lib/elasticsearch/api/actions/indices/delete_warmer.rb +32 -0
  38. data/lib/elasticsearch/api/actions/indices/exists.rb +35 -0
  39. data/lib/elasticsearch/api/actions/indices/exists_alias.rb +41 -0
  40. data/lib/elasticsearch/api/actions/indices/exists_type.rb +39 -0
  41. data/lib/elasticsearch/api/actions/indices/flush.rb +40 -0
  42. data/lib/elasticsearch/api/actions/indices/get_alias.rb +41 -0
  43. data/lib/elasticsearch/api/actions/indices/get_aliases.rb +32 -0
  44. data/lib/elasticsearch/api/actions/indices/get_mapping.rb +36 -0
  45. data/lib/elasticsearch/api/actions/indices/get_settings.rb +32 -0
  46. data/lib/elasticsearch/api/actions/indices/get_template.rb +30 -0
  47. data/lib/elasticsearch/api/actions/indices/get_warmer.rb +44 -0
  48. data/lib/elasticsearch/api/actions/indices/open.rb +33 -0
  49. data/lib/elasticsearch/api/actions/indices/optimize.rb +57 -0
  50. data/lib/elasticsearch/api/actions/indices/put_alias.rb +43 -0
  51. data/lib/elasticsearch/api/actions/indices/put_mapping.rb +49 -0
  52. data/lib/elasticsearch/api/actions/indices/put_settings.rb +45 -0
  53. data/lib/elasticsearch/api/actions/indices/put_template.rb +40 -0
  54. data/lib/elasticsearch/api/actions/indices/put_warmer.rb +48 -0
  55. data/lib/elasticsearch/api/actions/indices/refresh.rb +43 -0
  56. data/lib/elasticsearch/api/actions/indices/segments.rb +33 -0
  57. data/lib/elasticsearch/api/actions/indices/snapshot_index.rb +32 -0
  58. data/lib/elasticsearch/api/actions/indices/stats.rb +96 -0
  59. data/lib/elasticsearch/api/actions/indices/status.rb +46 -0
  60. data/lib/elasticsearch/api/actions/indices/update_aliases.rb +49 -0
  61. data/lib/elasticsearch/api/actions/indices/validate_query.rb +68 -0
  62. data/lib/elasticsearch/api/actions/info.rb +19 -0
  63. data/lib/elasticsearch/api/actions/mget.rb +64 -0
  64. data/lib/elasticsearch/api/actions/mlt.rb +86 -0
  65. data/lib/elasticsearch/api/actions/msearch.rb +75 -0
  66. data/lib/elasticsearch/api/actions/percolate.rb +57 -0
  67. data/lib/elasticsearch/api/actions/ping.rb +29 -0
  68. data/lib/elasticsearch/api/actions/scroll.rb +44 -0
  69. data/lib/elasticsearch/api/actions/search.rb +145 -0
  70. data/lib/elasticsearch/api/actions/suggest.rb +46 -0
  71. data/lib/elasticsearch/api/actions/update.rb +103 -0
  72. data/lib/elasticsearch/api/namespace/cluster.rb +20 -0
  73. data/lib/elasticsearch/api/namespace/common.rb +27 -0
  74. data/lib/elasticsearch/api/namespace/indices.rb +20 -0
  75. data/lib/elasticsearch/api/utils.rb +97 -0
  76. data/lib/elasticsearch/api/version.rb +5 -0
  77. data/test/integration/yaml_test_runner.rb +330 -0
  78. data/test/test_helper.rb +52 -0
  79. data/test/unit/bulk_test.rb +85 -0
  80. data/test/unit/client_test.rb +31 -0
  81. data/test/unit/cluster/get_settings_test.rb +26 -0
  82. data/test/unit/cluster/health_test.rb +38 -0
  83. data/test/unit/cluster/node_hot_threads_test.rb +35 -0
  84. data/test/unit/cluster/node_info_test.rb +45 -0
  85. data/test/unit/cluster/node_shutdown_test.rb +45 -0
  86. data/test/unit/cluster/node_stats_test.rb +65 -0
  87. data/test/unit/cluster/put_settings_test.rb +26 -0
  88. data/test/unit/cluster/reroute_test.rb +38 -0
  89. data/test/unit/cluster/state_test.rb +37 -0
  90. data/test/unit/count_test.rb +46 -0
  91. data/test/unit/create_document_test.rb +38 -0
  92. data/test/unit/delete_by_query_test.rb +42 -0
  93. data/test/unit/delete_document_test.rb +62 -0
  94. data/test/unit/exists_document_test.rb +76 -0
  95. data/test/unit/explain_document_test.rb +64 -0
  96. data/test/unit/get_document_source_test.rb +62 -0
  97. data/test/unit/get_document_test.rb +62 -0
  98. data/test/unit/hashie_test.rb +78 -0
  99. data/test/unit/index_document_test.rb +77 -0
  100. data/test/unit/indices/analyze_test.rb +67 -0
  101. data/test/unit/indices/clear_cache_test.rb +45 -0
  102. data/test/unit/indices/close_test.rb +42 -0
  103. data/test/unit/indices/create_test.rb +42 -0
  104. data/test/unit/indices/delete_alias_test.rb +38 -0
  105. data/test/unit/indices/delete_mapping_test.rb +47 -0
  106. data/test/unit/indices/delete_template_test.rb +26 -0
  107. data/test/unit/indices/delete_test.rb +45 -0
  108. data/test/unit/indices/delete_warmer_test.rb +59 -0
  109. data/test/unit/indices/exists_alias_test.rb +65 -0
  110. data/test/unit/indices/exists_test.rb +57 -0
  111. data/test/unit/indices/exists_type_test.rb +59 -0
  112. data/test/unit/indices/flush_test.rb +45 -0
  113. data/test/unit/indices/get_alias_test.rb +41 -0
  114. data/test/unit/indices/get_aliases_test.rb +35 -0
  115. data/test/unit/indices/get_mapping_test.rb +53 -0
  116. data/test/unit/indices/get_settings_test.rb +35 -0
  117. data/test/unit/indices/get_template_test.rb +32 -0
  118. data/test/unit/indices/get_warmer_test.rb +41 -0
  119. data/test/unit/indices/open_test.rb +42 -0
  120. data/test/unit/indices/optimize_test.rb +45 -0
  121. data/test/unit/indices/put_alias_test.rb +47 -0
  122. data/test/unit/indices/put_mapping_test.rb +57 -0
  123. data/test/unit/indices/put_settings_test.rb +50 -0
  124. data/test/unit/indices/put_template_test.rb +48 -0
  125. data/test/unit/indices/put_warmer_test.rb +62 -0
  126. data/test/unit/indices/refresh_test.rb +55 -0
  127. data/test/unit/indices/segments_test.rb +55 -0
  128. data/test/unit/indices/snapshot_index_test.rb +55 -0
  129. data/test/unit/indices/stats_test.rb +76 -0
  130. data/test/unit/indices/status_test.rb +55 -0
  131. data/test/unit/indices/update_aliases_test.rb +42 -0
  132. data/test/unit/indices/validate_query_test.rb +75 -0
  133. data/test/unit/info_test.rb +26 -0
  134. data/test/unit/json_builders_test.rb +64 -0
  135. data/test/unit/mget_test.rb +70 -0
  136. data/test/unit/mlt_test.rb +80 -0
  137. data/test/unit/msearch_test.rb +120 -0
  138. data/test/unit/percolate_test.rb +49 -0
  139. data/test/unit/ping_test.rb +48 -0
  140. data/test/unit/scroll_test.rb +26 -0
  141. data/test/unit/search_test.rb +93 -0
  142. data/test/unit/suggest_test.rb +55 -0
  143. data/test/unit/update_document_test.rb +62 -0
  144. data/test/unit/utils_test.rb +118 -0
  145. metadata +498 -0
@@ -0,0 +1,50 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Returns information about cluster "health".
7
+ #
8
+ # @example
9
+ #
10
+ # client.cluster.health
11
+ #
12
+ # @option arguments [String] :index Limit the information returned to a specific index
13
+ # @option arguments [String] :level Specify the level of detail for returned information
14
+ # (options: cluster, indices, shards)
15
+ # @option arguments [Boolean] :local Return local information, do not retrieve the state from master node
16
+ # (default: false)
17
+ # @option arguments [Time] :master_timeout Explicit operation timeout for connection to master node
18
+ # @option arguments [Time] :timeout Explicit operation timeout
19
+ # @option arguments [Number] :wait_for_active_shards Wait until the specified number of shards is active
20
+ # @option arguments [Number] :wait_for_nodes Wait until the specified number of nodes is available
21
+ # @option arguments [Number] :wait_for_relocating_shards Wait until the specified number of relocating
22
+ # shards is finished
23
+ # @option arguments [String] :wait_for_status Wait until cluster is in a specific state
24
+ # (options: green, yellow, red)
25
+ #
26
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-health/
27
+ #
28
+ def health(arguments={})
29
+ method = 'GET'
30
+ path = "_cluster/health"
31
+ params = arguments.select do |k,v|
32
+ [ :level,
33
+ :local,
34
+ :master_timeout,
35
+ :timeout,
36
+ :wait_for_active_shards,
37
+ :wait_for_nodes,
38
+ :wait_for_relocating_shards,
39
+ :wait_for_status ].include?(k)
40
+ end
41
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
42
+ params = Hash[params] unless params.is_a?(Hash)
43
+ body = nil
44
+
45
+ perform_request(method, path, params, body).body
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,46 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Returns information about the hottest threads in the cluster or on a specific node as a String.
7
+ #
8
+ #
9
+ # The information is returned as text, and allows you to understand what are currently
10
+ # the most taxing operations happening in the cluster, for debugging or monitoring purposes.
11
+ #
12
+ # @example Return 10 hottest threads
13
+ #
14
+ # client.cluster.node_hot_threads threads: 10
15
+ #
16
+ # @option arguments [List] :node_id A comma-separated list of node IDs or names to limit the returned information;
17
+ # use `_local` to return information from the node you're connecting to,
18
+ # leave empty to get information from all nodes
19
+ # @option arguments [Time] :interval The interval for the second sampling of threads
20
+ # @option arguments [Number] :snapshots Number of samples of thread stacktrace (default: 10)
21
+ # @option arguments [Number] :threads Specify the number of threads to provide information for (default: 3)
22
+ # @option arguments [String] :type The type to sample (default: cpu) (options: cpu, wait, block)
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @see http://www.elasticsearch.org/guide/reference/api/admin-cluster-nodes-hot-threads/
27
+ #
28
+ def node_hot_threads(arguments={})
29
+ method = 'GET'
30
+ path = "_cluster/nodes/#{arguments[:node_id]}/hot_threads".squeeze('/')
31
+ params = arguments.select do |k,v|
32
+ [ :interval,
33
+ :snapshots,
34
+ :threads,
35
+ :type ].include?(k)
36
+ end
37
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
38
+ params = Hash[params] unless params.is_a?(Hash)
39
+ body = nil
40
+
41
+ perform_request(method, path, params, body).body
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,59 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Returns information about nodes in the cluster (cluster settings, JVM version, etc).
7
+ #
8
+ # Use the `all` option to return all available settings, or limit the information returned
9
+ # to a specific type (eg. `http`).
10
+ #
11
+ # Use the `node_id` option to limit information to specific node(s).
12
+ #
13
+ # @example Return information about JVM
14
+ #
15
+ # client.cluster.node_info jvm: true
16
+ #
17
+ # @option arguments [List] :node_id A comma-separated list of node IDs or names to limit the returned information;
18
+ # use `_local` to return information from the node you're connecting to, leave
19
+ # empty to get information from all nodes
20
+ # @option arguments [Boolean] :all Return all available information
21
+ # @option arguments [Boolean] :clear Reset the default settings
22
+ # @option arguments [Boolean] :http Return information about HTTP
23
+ # @option arguments [Boolean] :jvm Return information about the JVM
24
+ # @option arguments [Boolean] :network Return information about network
25
+ # @option arguments [Boolean] :os Return information about the operating system
26
+ # @option arguments [Boolean] :plugin Return information about plugins
27
+ # @option arguments [Boolean] :process Return information about the Elasticsearch process
28
+ # @option arguments [Boolean] :settings Return information about node settings
29
+ # @option arguments [Boolean] :thread_pool Return information about the thread pool
30
+ # @option arguments [Boolean] :transport Return information about transport
31
+ #
32
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-nodes-info/
33
+ #
34
+ def node_info(arguments={})
35
+ method = 'GET'
36
+ path = Utils.__pathify( '_cluster/nodes', Utils.__listify(arguments[:node_id]) )
37
+ params = arguments.select do |k,v|
38
+ [ :all,
39
+ :clear,
40
+ :http,
41
+ :jvm,
42
+ :network,
43
+ :os,
44
+ :plugin,
45
+ :process,
46
+ :settings,
47
+ :thread_pool,
48
+ :transport ].include?(k)
49
+ end
50
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
51
+ params = Hash[params] unless params.is_a?(Hash)
52
+ body = nil
53
+
54
+ perform_request(method, path, params, body).body
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,36 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Shutdown one or all nodes
7
+ #
8
+ # @example Shut down node named _Bloke_
9
+ #
10
+ # client.cluster.node_shutdown node_id: 'Bloke'
11
+ #
12
+ # @option arguments [List] :node_id A comma-separated list of node IDs or names to perform the operation on; use
13
+ # `_local` to shutdown the node you're connected to, leave empty to
14
+ # shutdown all nodes
15
+ # @option arguments [Time] :delay Set the delay for the operation (default: 1s)
16
+ # @option arguments [Boolean] :exit Exit the JVM as well (default: true)
17
+ #
18
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-nodes-shutdown/
19
+ #
20
+ def node_shutdown(arguments={})
21
+ method = 'POST'
22
+ path = Utils.__pathify( '_cluster/nodes', Utils.__listify(arguments[:node_id]), '_shutdown' )
23
+ params = arguments.select do |k,v|
24
+ [ :delay,
25
+ :exit ].include?(k)
26
+ end
27
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
28
+ params = Hash[params] unless params.is_a?(Hash)
29
+ body = nil
30
+
31
+ perform_request(method, path, params, body).body
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,77 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Returns statistical information about nodes in the cluster.
7
+ #
8
+ # @example Return statistics about JVM
9
+ #
10
+ # client.cluster.node_stats clear: true, jvm: true
11
+ #
12
+ # @option arguments [List] :metric Limit the information returned for `indices` family to a specific metric
13
+ # (options: docs, fielddata, filter_cache, flush, get, id_cache, indexing, merges,
14
+ # refresh, search, store, warmer)
15
+ # @option arguments [List] :node_id A comma-separated list of node IDs or names to limit the returned information;
16
+ # use `_local` to return information from the node you're connecting to, leave
17
+ # empty to get information from all nodes
18
+ # @option arguments [Boolean] :all Return all available information
19
+ # @option arguments [Boolean] :clear Reset the default level of detail
20
+ # @option arguments [List] :fields A comma-separated list of fields for `fielddata` metric (supports wildcards)
21
+ # @option arguments [Boolean] :fs Return information about the filesystem
22
+ # @option arguments [Boolean] :http Return information about HTTP
23
+ # @option arguments [Boolean] :indices Return information about indices
24
+ # @option arguments [Boolean] :jvm Return information about the JVM
25
+ # @option arguments [Boolean] :network Return information about network
26
+ # @option arguments [Boolean] :os Return information about the operating system
27
+ # @option arguments [Boolean] :process Return information about the Elasticsearch process
28
+ # @option arguments [Boolean] :thread_pool Return information about the thread pool
29
+ # @option arguments [Boolean] :transport Return information about transport
30
+ #
31
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-nodes-stats/
32
+ #
33
+ def node_stats(arguments={})
34
+ method = 'GET'
35
+
36
+ case
37
+ # Field data metric for the `indices` metric family
38
+ when arguments[:indices] && arguments[:metric] == 'fielddata'
39
+ path = Utils.__pathify( '_nodes', Utils.__listify(arguments[:node_id]), 'stats/indices/fielddata' )
40
+ params = { :fields => Utils.__listify(arguments[:fields]) }
41
+
42
+ # `indices` metric family incl. a metric
43
+ when arguments[:indices] && arguments[:metric]
44
+ path = Utils.__pathify( '_nodes', Utils.__listify(arguments[:node_id]), 'stats/indices', arguments[:metric] )
45
+ params = {}
46
+
47
+ else
48
+ path = Utils.__pathify( '_nodes', Utils.__listify(arguments[:node_id]), 'stats' )
49
+
50
+ params = arguments.select do |k,v|
51
+ [ :all,
52
+ :clear,
53
+ :fields,
54
+ :fs,
55
+ :http,
56
+ :indices,
57
+ :jvm,
58
+ :network,
59
+ :os,
60
+ :process,
61
+ :thread_pool,
62
+ :transport ].include?(k)
63
+ end
64
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
65
+ params = Hash[params] unless params.is_a?(Hash)
66
+
67
+ params[:fields] = Utils.__listify(params[:fields]) if params[:fields]
68
+ end
69
+
70
+ body = nil
71
+
72
+ perform_request(method, path, params, body).body
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,28 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Update cluster settings.
7
+ #
8
+ # @example Disable shard allocation in the cluster until restart
9
+ #
10
+ # client.cluster.put_settings body: { transient: { 'cluster.routing.allocation.disable_allocation' => true } }
11
+ #
12
+ # @option arguments [Hash] :body The settings to be updated. Can be either `transient` or `persistent`
13
+ # (survives cluster restart).
14
+ #
15
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-update-settings/
16
+ #
17
+ def put_settings(arguments={})
18
+ method = 'PUT'
19
+ path = "_cluster/settings"
20
+ params = {}
21
+ body = arguments[:body] || {}
22
+
23
+ perform_request(method, path, params, body).body
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,44 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Perform manual shard allocation in the cluster.
7
+ #
8
+ # Pass the operations you want to perform in the `:body` option. Use the `dry_run` option to
9
+ # evaluate the result of operations without actually performing them.
10
+ #
11
+ # @example Move shard `0` of index `myindex` from node named _Node1_ to node named _Node2_
12
+ #
13
+ # client.cluster.reroute body: {
14
+ # commands: [
15
+ # { move: { index: 'myindex', shard: 0, from_node: 'Node1', to_node: 'Node2' } }
16
+ # ]
17
+ # }
18
+ #
19
+ # @note If you want to explicitely set the shard allocation to a certain node, you might
20
+ # want to look at the `allocation.*` cluster settings.
21
+ #
22
+ # @option arguments [Hash] :body The definition of `commands` to perform (`move`, `cancel`, `allocate`)
23
+ # @option arguments [Boolean] :dry_run Simulate the operation only and return the resulting state
24
+ # @option arguments [Boolean] :filter_metadata Don't return cluster state metadata (default: false)
25
+ #
26
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-reroute/
27
+ #
28
+ def reroute(arguments={})
29
+ method = 'POST'
30
+ path = "_cluster/reroute"
31
+ params = arguments.select do |k,v|
32
+ [ :dry_run,
33
+ :filter_metadata ].include?(k)
34
+ end
35
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
36
+ params = Hash[params] unless params.is_a?(Hash)
37
+ body = arguments[:body] || {}
38
+
39
+ perform_request(method, path, params, body).body
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,47 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Get information about the cluster state (indices settings, allocations, etc)
7
+ #
8
+ # @example
9
+ #
10
+ # client.cluster.state
11
+ #
12
+ # @option arguments [Boolean] :filter_blocks Do not return information about blocks
13
+ # @option arguments [Boolean] :filter_index_templates Do not return information about index templates
14
+ # @option arguments [List] :filter_indices Limit returned metadata information to specific indices
15
+ # @option arguments [Boolean] :filter_metadata Do not return information about indices metadata
16
+ # @option arguments [Boolean] :filter_nodes Do not return information about nodes
17
+ # @option arguments [Boolean] :filter_routing_table Do not return information about shard allocation
18
+ # (`routing_table` and `routing_nodes`)
19
+ # @option arguments [Boolean] :local Return local information, do not retrieve the state from master node
20
+ # (default: false)
21
+ # @option arguments [Time] :master_timeout Specify timeout for connection to master
22
+ #
23
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-state/
24
+ #
25
+ def state(arguments={})
26
+ method = 'GET'
27
+ path = "_cluster/state"
28
+ params = arguments.select do |k,v|
29
+ [ :filter_blocks,
30
+ :filter_index_templates,
31
+ :filter_indices,
32
+ :filter_metadata,
33
+ :filter_nodes,
34
+ :filter_routing_table,
35
+ :local,
36
+ :master_timeout ].include?(k)
37
+ end
38
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
39
+ params = Hash[params] unless params.is_a?(Hash)
40
+ body = nil
41
+
42
+ perform_request(method, path, params, body).body
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,46 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Get the number of documents for the cluster, index, type, or a query.
6
+ #
7
+ # @example Get the number of all documents in the cluster
8
+ #
9
+ # client.count
10
+ #
11
+ # @example Get the number of documents in a specified index
12
+ #
13
+ # client.count index: 'myindex'
14
+ #
15
+ # @option arguments [List] :index A comma-separated list of indices to restrict the results
16
+ # @option arguments [List] :type A comma-separated list of types to restrict the results
17
+ # @option arguments [Hash] :body A query to restrict the results (optional)
18
+ # @option arguments [String] :ignore_indices When performed on multiple indices, allows to ignore `missing` ones
19
+ # (options: none, missing)
20
+ # @option arguments [Number] :min_score Include only documents with a specific `_score` value in the result
21
+ # @option arguments [String] :preference Specify the node or shard the operation should be performed on
22
+ # (default: random)
23
+ # @option arguments [String] :routing Specific routing value
24
+ # @option arguments [String] :source The URL-encoded query definition (instead of using the request body)
25
+ #
26
+ # @see http://elasticsearch.org/guide/reference/api/count/
27
+ #
28
+ def count(arguments={})
29
+ method = 'GET'
30
+ path = Utils.__pathify( Utils.__listify(arguments[:index]), Utils.__listify(arguments[:type]), '_count' )
31
+ params = arguments.select do |k,v|
32
+ [ :ignore_indices,
33
+ :min_score,
34
+ :preference,
35
+ :routing,
36
+ :source ].include?(k)
37
+ end
38
+ # Normalize Ruby 1.8 and Ruby 1.9 Hash#select behaviour
39
+ params = Hash[params] unless params.is_a?(Hash)
40
+ body = arguments[:body]
41
+
42
+ perform_request(method, path, params, body).body
43
+ end
44
+ end
45
+ end
46
+ end