elasticsearch-api 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +15 -0
  2. data/elasticsearch-api.gemspec +3 -2
  3. data/lib/elasticsearch/api.rb +2 -1
  4. data/lib/elasticsearch/api/actions/abort_benchmark.rb +27 -0
  5. data/lib/elasticsearch/api/actions/benchmark.rb +62 -0
  6. data/lib/elasticsearch/api/actions/cat/fielddata.rb +49 -0
  7. data/lib/elasticsearch/api/actions/cluster/health.rb +5 -1
  8. data/lib/elasticsearch/api/actions/cluster/state.rb +2 -1
  9. data/lib/elasticsearch/api/actions/count_percolate.rb +1 -1
  10. data/lib/elasticsearch/api/actions/delete.rb +1 -1
  11. data/lib/elasticsearch/api/actions/get.rb +4 -0
  12. data/lib/elasticsearch/api/actions/index.rb +22 -2
  13. data/lib/elasticsearch/api/actions/indices/get_template.rb +5 -1
  14. data/lib/elasticsearch/api/actions/indices/optimize.rb +3 -0
  15. data/lib/elasticsearch/api/actions/indices/put_template.rb +2 -3
  16. data/lib/elasticsearch/api/actions/indices/recovery.rb +42 -0
  17. data/lib/elasticsearch/api/actions/indices/stats.rb +42 -36
  18. data/lib/elasticsearch/api/actions/list_benchmarks.rb +29 -0
  19. data/lib/elasticsearch/api/actions/mlt.rb +39 -1
  20. data/lib/elasticsearch/api/actions/nodes/info.rb +11 -9
  21. data/lib/elasticsearch/api/actions/percolate.rb +1 -1
  22. data/lib/elasticsearch/api/actions/scroll.rb +20 -2
  23. data/lib/elasticsearch/api/actions/search.rb +3 -2
  24. data/lib/elasticsearch/api/actions/search_shards.rb +41 -0
  25. data/lib/elasticsearch/api/actions/search_template.rb +61 -0
  26. data/lib/elasticsearch/api/actions/snapshot/create.rb +1 -1
  27. data/lib/elasticsearch/api/actions/snapshot/create_repository.rb +1 -1
  28. data/lib/elasticsearch/api/actions/snapshot/restore.rb +1 -1
  29. data/lib/elasticsearch/api/actions/snapshot/status.rb +40 -0
  30. data/lib/elasticsearch/api/utils.rb +23 -1
  31. data/lib/elasticsearch/api/version.rb +1 -1
  32. data/test/integration/yaml_test_runner.rb +1 -0
  33. data/test/unit/abort_benchmark_test.rb +26 -0
  34. data/test/unit/benchmark_test.rb +26 -0
  35. data/test/unit/cat/fielddata_test.rb +38 -0
  36. data/test/unit/indices/recovery_test.rb +26 -0
  37. data/test/unit/indices/stats_test.rb +5 -14
  38. data/test/unit/list_benchmarks_test.rb +26 -0
  39. data/test/unit/nodes/info_test.rb +21 -0
  40. data/test/unit/search_shards_test.rb +26 -0
  41. data/test/unit/search_template_test.rb +26 -0
  42. data/test/unit/snapshot/status_test.rb +38 -0
  43. data/test/unit/utils_test.rb +8 -0
  44. metadata +43 -53
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZGQwODMzZmNlYjgzMjE4OTQ4OGI4ZGIzM2VkYTA1NjAyZTYwZDI3ZQ==
5
+ data.tar.gz: !binary |-
6
+ ZjY0YzIzZWUyOTA3YjFkYjFhZjc5NjNlN2UwMWM2NmFhZDViNzZkYw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZmQyYmNiYzI0ODI4MzFiYmExZDU3Njc1ZmVlOGNmMTZkNGUxMWJjNzE3Yzhi
10
+ ZjllODY2OTAzMjViZDBhZGJkYjU5OGRjNWNhYmE1NzYwM2JlNmM4NDZkZDRl
11
+ YmVhZDM0MmJkNjhmMzU2MjBlZmYyNjBjMTdmOGQ0NWI3YWRlY2M=
12
+ data.tar.gz: !binary |-
13
+ ZDA5NzA2MjI5MDE1YjE1M2RlYzBjNmM0NTA2MDRjMzlmMTkwODA2M2MwNzc3
14
+ YjgyM2NkMDZjZTIxZDY2ODIxNzg5NDk3ZjczMDY0Yjg2ZDFhYzIyODI5OTgz
15
+ ZjcxNmQ3MTg0NTI3NzRjNjVhYTQ3MjYxYjYxODIwZTQ4NDg1Yzg=
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency "elasticsearch-transport"
30
30
 
31
31
  if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
32
+ s.add_development_dependency "minitest", "~> 4.0"
32
33
  s.add_development_dependency "elasticsearch-extensions"
33
34
  end
34
35
 
@@ -52,13 +53,13 @@ Gem::Specification.new do |s|
52
53
  end
53
54
 
54
55
  if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
55
- s.add_development_dependency "ruby-prof" unless defined? JRUBY_VERSION
56
+ s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
56
57
  s.add_development_dependency "jbuilder"
57
58
  s.add_development_dependency "escape_utils" unless defined? JRUBY_VERSION
58
59
  s.add_development_dependency "simplecov"
59
60
  s.add_development_dependency "simplecov-rcov"
60
61
  s.add_development_dependency "cane"
61
- s.add_development_dependency "require-prof"
62
+ s.add_development_dependency "require-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
62
63
  s.add_development_dependency "coveralls"
63
64
  end
64
65
 
@@ -21,7 +21,8 @@ module Elasticsearch
21
21
 
22
22
  COMMON_QUERY_PARAMS = [
23
23
  :format, # Search, Cat, ...
24
- :pretty # Pretty-print the response
24
+ :pretty, # Pretty-print the response
25
+ :human # Return numeric values in human readable format
25
26
  ]
26
27
 
27
28
  # Auto-include all namespaces in the receiver
@@ -0,0 +1,27 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Abort a running benchmark
6
+ #
7
+ # @example
8
+ #
9
+ # client.abort_benchmark name: 'my_benchmark'
10
+ #
11
+ # @option arguments [String] :name A benchmark name
12
+ #
13
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-benchmark.html
14
+ #
15
+ def abort_benchmark(arguments={})
16
+ valid_params = [
17
+ ]
18
+ method = 'POST'
19
+ path = "_bench/abort/#{arguments[:name]}"
20
+ params = {}
21
+ body = nil
22
+
23
+ perform_request(method, path, params, body).body
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,62 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Run a single query, or a set of queries, and return statistics on their performance
6
+ #
7
+ # @example Return statistics for a single query
8
+ #
9
+ # client.benchmark body: {
10
+ # name: 'my_benchmark',
11
+ # competitors: [
12
+ # {
13
+ # name: 'query_1',
14
+ # requests: [
15
+ # { query: { match: { _all: 'a*' } } }
16
+ # ]
17
+ # }
18
+ # ]
19
+ # }
20
+ #
21
+ # @example Return statistics for a set of "competing" queries
22
+ #
23
+ # client.benchmark body: {
24
+ # name: 'my_benchmark',
25
+ # competitors: [
26
+ # {
27
+ # name: 'query_a',
28
+ # requests: [
29
+ # { query: { match: { _all: 'a*' } } }
30
+ # ]
31
+ # },
32
+ # {
33
+ # name: 'query_b',
34
+ # requests: [
35
+ # { query: { match: { _all: 'b*' } } }
36
+ # ]
37
+ # }
38
+ # ]
39
+ # }
40
+ #
41
+ # @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string
42
+ # to perform the operation on all indices
43
+ # @option arguments [String] :type The name of the document type
44
+ # @option arguments [Hash] :body The search definition using the Query DSL
45
+ # @option arguments [Boolean] :verbose Specify whether to return verbose statistics about each iteration
46
+ # (default: false)
47
+ #
48
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-benchmark.html
49
+ #
50
+ def benchmark(arguments={})
51
+ valid_params = [
52
+ :verbose ]
53
+ method = 'PUT'
54
+ path = "_bench"
55
+ params = Utils.__validate_and_extract_params arguments, valid_params
56
+ body = arguments[:body]
57
+
58
+ perform_request(method, path, params, body).body
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,49 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cat
4
+ module Actions
5
+
6
+ # Return information about field data usage across the cluster
7
+ #
8
+ # @example Return the total size of field data
9
+ #
10
+ # client.cat.fielddata
11
+ #
12
+ # @example Return both the total size and size for specific fields
13
+ #
14
+ # client.cat.fielddata fields: 'title,body'
15
+ #
16
+ # @option arguments [List] :fields A comma-separated list of fields to include in the output
17
+ # @option arguments [String] :bytes The unit in which to display byte values (options: b, k, m, g)
18
+ # @option arguments [Boolean] :local Return local information, do not retrieve the state from master node
19
+ # (default: false)
20
+ # @option arguments [Time] :master_timeout Explicit operation timeout for connection to master node
21
+ # @option arguments [List] :h Comma-separated list of column names to display
22
+ # @option arguments [Boolean] :help Return help information
23
+ # @option arguments [Boolean] :v Verbose mode. Display column headers
24
+ #
25
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-fielddata.html
26
+ #
27
+ def fielddata(arguments={})
28
+ valid_params = [
29
+ :bytes,
30
+ :local,
31
+ :master_timeout,
32
+ :h,
33
+ :help,
34
+ :v,
35
+ :fields ]
36
+
37
+ fields = arguments.delete(:fields)
38
+
39
+ method = 'GET'
40
+ path = Utils.__pathify "_cat/fielddata", Utils.__listify(fields)
41
+ params = Utils.__validate_and_extract_params arguments, valid_params
42
+ body = nil
43
+
44
+ perform_request(method, path, params, body).body
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -5,10 +5,14 @@ module Elasticsearch
5
5
 
6
6
  # Returns information about cluster "health".
7
7
  #
8
- # @example
8
+ # @example Get the cluster health information
9
9
  #
10
10
  # client.cluster.health
11
11
  #
12
+ # @example Block the request until the cluster is in the "yellow" state
13
+ #
14
+ # client.cluster.health wait_for_status: 'yellow'
15
+ #
12
16
  # @option arguments [String] :index Limit the information returned to a specific index
13
17
  # @option arguments [String] :level Specify the level of detail for returned information
14
18
  # (options: cluster, indices, shards)
@@ -12,7 +12,8 @@ module Elasticsearch
12
12
  # @option arguments [List] :index A comma-separated list of index names; use `_all` or omit to
13
13
  # perform the operation on all indices
14
14
  # @option arguments [List] :metric Limit the information returned to the specified metrics
15
- # (options: _all, blocks, index_templates, metadata, nodes, routing_table)
15
+ # (options: _all, blocks, index_templates, metadata, nodes, routing_table,
16
+ # master_node, version)
16
17
  # @option arguments [List] :index_templates A comma separated list to return specific index templates when
17
18
  # returning metadata
18
19
  # @option arguments [Boolean] :local Return local information, do not retrieve the state from master node
@@ -44,7 +44,7 @@ module Elasticsearch
44
44
  # @option arguments [String] :percolate_index The index to percolate the document into. Defaults to passed `index`.
45
45
  # @option arguments [String] :percolate_type The type to percolate document into. Defaults to passed `type`.
46
46
  # @option arguments [Number] :version Explicit version number for concurrency control
47
- # @option arguments [String] :version_type Specific version type (options: internal, external)
47
+ # @option arguments [String] :version_type Specific version type (options: internal, external, external_gte, force)
48
48
  #
49
49
  # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-percolate.html
50
50
  #
@@ -24,7 +24,7 @@ module Elasticsearch
24
24
  # @option arguments [String] :routing Specific routing value
25
25
  # @option arguments [Time] :timeout Explicit operation timeout
26
26
  # @option arguments [Number] :version Explicit version number for concurrency control
27
- # @option arguments [String] :version_type Specific version type (options: internal, external)
27
+ # @option arguments [String] :version_type Specific version type (options: internal, external, external_gte, force)
28
28
  #
29
29
  # @see http://elasticsearch.org/guide/reference/api/delete/
30
30
  #
@@ -22,6 +22,8 @@ module Elasticsearch
22
22
  # @option arguments [Boolean] :realtime Specify whether to perform the operation in realtime or search mode
23
23
  # @option arguments [Boolean] :refresh Refresh the shard containing the document before performing the operation
24
24
  # @option arguments [String] :routing Specific routing value
25
+ # @option arguments [Number] :version Explicit version number for concurrency control
26
+ # @option arguments [String] :version_type Specific version type (options: internal, external, external_gte, force)
25
27
  # @option arguments [String] :_source Specify whether the _source field should be returned,
26
28
  # or a list of fields to return
27
29
  # @option arguments [String] :_source_exclude A list of fields to exclude from the returned _source field
@@ -41,6 +43,8 @@ module Elasticsearch
41
43
  :realtime,
42
44
  :refresh,
43
45
  :routing,
46
+ :version,
47
+ :version_type,
44
48
  :_source,
45
49
  :_source_include,
46
50
  :_source_exclude ]
@@ -16,7 +16,6 @@ module Elasticsearch
16
16
  # By default, the document will be available for {Actions#get} immediately, for {Actions#search} only
17
17
  # after an index refresh operation has been performed (either automatically or manually).
18
18
  #
19
- #
20
19
  # @example Create or update a document `myindex/mytype/1`
21
20
  #
22
21
  # client.index index: 'myindex',
@@ -30,6 +29,27 @@ module Elasticsearch
30
29
  # counter: 1
31
30
  # }
32
31
  #
32
+ # @example Refresh the index after the operation (useful e.g. in integration tests)
33
+ #
34
+ # client.index index: 'myindex', type: 'mytype', id: '1', body: { title: 'TEST' }, refresh: true
35
+ # client.search index: 'myindex', q: 'title:test'
36
+ #
37
+ # @example Create a document with a specific expiration time (TTL)
38
+ #
39
+ # # Decrease the default housekeeping interval first:
40
+ # client.cluster.put_settings body: { transient: { 'indices.ttl.interval' => '1s' } }
41
+ #
42
+ # # Enable the `_ttl` property for all types within the index
43
+ # client.indices.create index: 'myindex', body: { mappings: { mytype: { _ttl: { enabled: true } } } }
44
+ #
45
+ # client.index index: 'myindex', type: 'mytype', id: '1', body: { title: 'TEST' }, ttl: '5s'
46
+ #
47
+ # sleep 3 and client.get index: 'myindex', type: 'mytype', id: '1'
48
+ # # => {"_index"=>"myindex" ... "_source"=>{"title"=>"TEST"}}
49
+ #
50
+ # sleep 3 and client.get index: 'myindex', type: 'mytype', id: '1'
51
+ # # => Elasticsearch::Transport::Transport::Errors::NotFound: [404] ...
52
+ #
33
53
  # @option arguments [String] :id Document ID (optional, will be auto-generated if missing)
34
54
  # @option arguments [String] :index The name of the index (*Required*)
35
55
  # @option arguments [String] :type The type of the document (*Required*)
@@ -46,7 +66,7 @@ module Elasticsearch
46
66
  # @option arguments [Time] :timestamp Explicit timestamp for the document
47
67
  # @option arguments [Duration] :ttl Expiration time for the document
48
68
  # @option arguments [Number] :version Explicit version number for concurrency control
49
- # @option arguments [String] :version_type Specific version type (options: internal, external)
69
+ # @option arguments [String] :version_type Specific version type (options: internal, external, external_gte, force)
50
70
  #
51
71
  # @see http://elasticsearch.org/guide/reference/api/index_/
52
72
  #
@@ -5,13 +5,17 @@ module Elasticsearch
5
5
 
6
6
  # Get a single index template.
7
7
  #
8
+ # @example Get all templates
9
+ #
10
+ # client.indices.get_template
11
+ #
8
12
  # @example Get a template named _mytemplate_
9
13
  #
10
14
  # client.indices.get_template name: 'mytemplate'
11
15
  #
12
16
  # @note Use the {Cluster::Actions#state} API to get a list of all templates.
13
17
  #
14
- # @option arguments [String] :name The name of the template (*Required*)
18
+ # @option arguments [String] :name The name of the template (supports wildcards)
15
19
  #
16
20
  # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-templates/
17
21
  #
@@ -25,6 +25,8 @@ module Elasticsearch
25
25
  # are open, closed or both. (options: open, closed)
26
26
  # @option arguments [Boolean] :flush Specify whether the index should be flushed after performing the operation
27
27
  # (default: true)
28
+ # @option arguments [Boolean] :force Force a merge operation to run, even when the index has a single segment
29
+ # (default: true)
28
30
  # @option arguments [String] :ignore_indices When performed on multiple indices, allows to ignore
29
31
  # `missing` ones (options: none, missing) @until 1.0
30
32
  # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
@@ -48,6 +50,7 @@ module Elasticsearch
48
50
  :allow_no_indices,
49
51
  :expand_wildcards,
50
52
  :flush,
53
+ :force,
51
54
  :master_timeout,
52
55
  :max_num_segments,
53
56
  :only_expunge_deletes,
@@ -5,11 +5,10 @@ module Elasticsearch
5
5
 
6
6
  # Create or update an index template.
7
7
  #
8
- #
9
8
  # @example Create a template for all indices starting with `logs-`
10
9
  #
11
- # client.indices.put_template :name => 'foo',
12
- # :body => { template: 'logs-*', settings: { 'index.number_of_shards' => 1 } }
10
+ # client.indices.put_template name: 'foo',
11
+ # body: { template: 'logs-*', settings: { 'index.number_of_shards' => 1 } }
13
12
  #
14
13
  # @option arguments [String] :name The name of the template (*Required*)
15
14
  # @option arguments [Hash] :body The template definition (*Required*)
@@ -0,0 +1,42 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Indices
4
+ module Actions
5
+
6
+ # Return information about shard recovery for one or more indices
7
+ #
8
+ # @example Get recovery information for a single index
9
+ #
10
+ # client.indices.recovery index: 'foo'
11
+ #
12
+ # @example Get detailed recovery information for multiple indices
13
+ #
14
+ # client.indices.recovery index: ['foo', 'bar'], detailed: true
15
+ #
16
+ # @example Get recovery information for all indices
17
+ #
18
+ # client.indices.recovery
19
+ #
20
+ # @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices
21
+ # @option arguments [Boolean] :detailed Whether to display detailed information about shard recovery
22
+ # @option arguments [Boolean] :active_only Display only those recoveries that are currently on-going
23
+ # @option arguments [Boolean] :human Whether to return time and byte values in human readable format
24
+ #
25
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/indices-recovery.html
26
+ #
27
+ def recovery(arguments={})
28
+ valid_params = [
29
+ :detailed,
30
+ :active_only,
31
+ :human ]
32
+ method = 'GET'
33
+ path = Utils.__pathify Utils.__listify(arguments[:index]), '_recovery'
34
+ params = Utils.__validate_and_extract_params arguments, valid_params
35
+ body = nil
36
+
37
+ perform_request(method, path, params, body).body
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -9,35 +9,34 @@ module Elasticsearch
9
9
  # how much time did indexing, search and other operations take, how much disk space it takes,
10
10
  # how much memory filter caches or field data require, etc.
11
11
  #
12
- # @example Get default statistics for all indices
12
+ # @example Get all available statistics for all indices
13
13
  #
14
14
  # client.indices.stats
15
15
  #
16
- # @example Get all available statistics for a single index
16
+ # @example Get statistics for a single index
17
17
  #
18
- # client.indices.stats index: 'foo', all: true
18
+ # client.indices.stats index: 'foo'
19
19
  #
20
20
  # @example Get statistics about documents and disk size for multiple indices
21
21
  #
22
- # client.indices.stats index: ['foo', 'bar'], clear: true, docs: true, store: true
22
+ # client.indices.stats index: ['foo', 'bar'], docs: true, store: true
23
23
  #
24
- # @example Get statistics about filter cache and field data, for all indices
24
+ # @example Get statistics about filter cache and field data for all fields
25
25
  #
26
- # client.indices.stats clear: true, fielddata: true , filter_cache: true, fields: '*'
26
+ # client.indices.stats fielddata: true, filter_cache: true
27
27
  #
28
- # @example Get statistics about searches, with segmentation for different search groups
28
+ # @example Get statistics about filter cache and field data for specific fields
29
29
  #
30
- # client.indices.stats clear: true, search: true , groups: ['groupA', 'groupB']
30
+ # client.indices.stats fielddata: true, filter_cache: true, fields: 'created_at,tags'
31
31
  #
32
- # @since The `fielddata`, `filter_cache` and `id_cache` metrics are available from version 0.90.
32
+ # @example Get statistics about filter cache and field data per field for all fields
33
+ #
34
+ # client.indices.stats fielddata: true, filter_cache: true, fields: '*'
35
+ #
36
+ # @example Get statistics about searches, with segmentation for different search groups
37
+ #
38
+ # client.indices.stats search: true, groups: ['groupA', 'groupB']
33
39
  #
34
- # @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
35
- # no concrete indices. (This includes `_all` string or when no
36
- # indices have been specified)
37
- # @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
38
- # are open, closed or both. (options: open, closed)
39
- # @option arguments [Boolean] :all Return all available information
40
- # @option arguments [Boolean] :clear Reset the default level of detail
41
40
  # @option arguments [Boolean] :docs Return information about indexed and deleted documents
42
41
  # @option arguments [Boolean] :fielddata Return information about field data
43
42
  # @option arguments [Boolean] :fields A comma-separated list of fields for `fielddata` metric (supports wildcards)
@@ -46,51 +45,58 @@ module Elasticsearch
46
45
  # @option arguments [Boolean] :get Return information about get operations
47
46
  # @option arguments [Boolean] :groups A comma-separated list of search groups for `search` statistics
48
47
  # @option arguments [Boolean] :id_cache Return information about ID cache
49
- # @option arguments [String] :ignore_indices When performed on multiple indices, allows to ignore
50
- # `missing` ones (options: none, missing) @until 1.0
51
- # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
52
- # unavailable (missing, closed, etc)
53
48
  # @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string
54
49
  # to perform the operation on all indices
55
50
  # @option arguments [Boolean] :indexing Return information about indexing operations
56
- # @option arguments [List] :indexing_types A comma-separated list of document types to include
57
- # in the `indexing` statistics
51
+ # @option arguments [List] :types A comma-separated list of document types to include in the `indexing` info
58
52
  # @option arguments [Boolean] :merge Return information about merge operations
59
53
  # @option arguments [Boolean] :refresh Return information about refresh operations
60
54
  # @option arguments [Boolean] :search Return information about search operations; use the `groups` parameter to
61
55
  # include information for specific search groups
62
- # @option arguments [List] :search_groups A comma-separated list of search groups to include
63
- # in the `search` statistics
56
+ # @option arguments [List] :groups A comma-separated list of search groups to include in the `search` statistics
57
+ # @option arguments [Boolean] :suggest Return information about suggest statistics
64
58
  # @option arguments [Boolean] :store Return information about the size of the index
65
59
  # @option arguments [Boolean] :warmer Return information about warmers
60
+ # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
61
+ # unavailable (missing, closed, etc)
62
+ # @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
63
+ # no concrete indices. (This includes `_all` string or when no
64
+ # indices have been specified)
65
+ # @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
66
+ # are open, closed or both. (options: open, closed)
66
67
  #
67
- # @see http://elasticsearch.org/guide/reference/api/admin-indices-stats/
68
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-stats.html
68
69
  #
69
70
  def stats(arguments={})
70
- valid_params = [
71
- :all,
72
- :clear,
71
+ valid_parts = [
73
72
  :docs,
74
73
  :fielddata,
75
- :fields,
76
74
  :filter_cache,
77
75
  :flush,
78
76
  :get,
79
- :groups,
80
- :id_cache,
81
- :ignore_indices,
82
- :ignore_unavailable,
83
- :allow_no_indices,
84
- :expand_wildcards,
85
77
  :indexing,
86
78
  :merge,
87
79
  :refresh,
88
80
  :search,
81
+ :suggest,
89
82
  :store,
90
83
  :warmer ]
91
84
 
85
+ valid_params = [
86
+ :fields,
87
+ :completion_fields,
88
+ :fielddata_fields,
89
+ :groups,
90
+ :types,
91
+ :ignore_indices,
92
+ :ignore_unavailable,
93
+ :allow_no_indices,
94
+ :expand_wildcards ]
95
+
92
96
  method = 'GET'
93
- path = Utils.__pathify Utils.__listify(arguments[:index]), '_stats'
97
+
98
+ parts = Utils.__extract_parts arguments, valid_parts
99
+ path = Utils.__pathify Utils.__listify(arguments[:index]), '_stats', Utils.__listify(parts)
94
100
 
95
101
  params = Utils.__validate_and_extract_params arguments, valid_params
96
102
  params[:fields] = Utils.__listify(params[:fields]) if params[:fields]