opensearch-api 2.1.0 → 2.2.0
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +28 -0
- data/README.md +12 -182
- data/Rakefile +2 -2
- data/USER_GUIDE.md +155 -0
- data/lib/opensearch/api/actions/cat/all_pit_segments.rb +46 -0
- data/lib/opensearch/api/actions/cat/pit_segments.rb +49 -0
- data/lib/opensearch/api/actions/create_pit.rb +45 -0
- data/lib/opensearch/api/actions/delete_all_pits.rb +26 -0
- data/lib/opensearch/api/actions/delete_pit.rb +30 -0
- data/lib/opensearch/api/actions/get_all_pits.rb +26 -0
- data/lib/opensearch/api/version.rb +1 -1
- data/opensearch-api.gemspec +2 -2
- data/spec/opensearch/api/actions/cat/all_pit_segments_spec.rb +36 -0
- data/spec/opensearch/api/actions/cat/pit_segments_spec.rb +43 -0
- data/spec/opensearch/api/actions/create_pit_spec.rb +58 -0
- data/spec/opensearch/api/actions/delete_all_pits_spec.rb +35 -0
- data/spec/opensearch/api/actions/delete_pit_spec.rb +41 -0
- data/spec/opensearch/api/actions/get_all_pits_spec.rb +35 -0
- data.tar.gz.sig +0 -0
- metadata +28 -14
- metadata.gz.sig +0 -0
- data/lib/opensearch/api/actions/close_point_in_time.rb +0 -50
- data/lib/opensearch/api/actions/open_point_in_time.rb +0 -72
- data/spec/opensearch/api/actions/close_point_in_time_spec.rb +0 -43
- data/spec/opensearch/api/actions/open_point_in_time_spec.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 832f3792a1ba90a36107ed481ce4a8d312788f0cc6d2499010fbb83f75310b3f
|
4
|
+
data.tar.gz: 8cd92be697d977c3e7dbb8e968f89c5e65c72d8780b825db470ae902a0a8fa4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9af645120326fb0d4a4b3afe5dd063356c54eb02b4a813c2d3a86a6ffa4add32ec7c31291ade794d1fa4a229a6294d0882b58b92310746a783d170bd07c5147e
|
7
|
+
data.tar.gz: 65efd59ac74703fd6d6daf9ff04744e46cd962111821a6d9ede0653308c4563aa9171b0d6afb36e050e33a0bc56b8aff78358a1311d0743a1701ff661cfedc99
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
3
|
+
|
4
|
+
## [Unreleased]
|
5
|
+
### Added
|
6
|
+
### Changed
|
7
|
+
### Deprecated
|
8
|
+
### Removed
|
9
|
+
### Fixed
|
10
|
+
### Security
|
11
|
+
|
12
|
+
## [2.2.0]
|
13
|
+
### Added
|
14
|
+
- Added Point-In-Time API ([#136](https://github.com/opensearch-project/opensearch-ruby/issues/136))
|
15
|
+
### Changed
|
16
|
+
### Deprecated
|
17
|
+
### Removed
|
18
|
+
- Removed Legacy X-Pack Point-In-Time API ([#136](https://github.com/opensearch-project/opensearch-ruby/issues/136))
|
19
|
+
### Fixed
|
20
|
+
### Security
|
21
|
+
|
22
|
+
## 2.1.0
|
23
|
+
### Changed
|
24
|
+
- Update comments around deprecated and inclusive naming ([#112](https://github.com/opensearch-project/opensearch-ruby/pull/112))
|
25
|
+
### Removed
|
26
|
+
- Remove deprecated escape_utils ([#74](https://github.com/opensearch-project/opensearch-ruby/pull/74))
|
27
|
+
### Fixed
|
28
|
+
- Fixing tests related to escape utils latest version ([#73](https://github.com/opensearch-project/opensearch-ruby/pull/73))
|
data/README.md
CHANGED
@@ -1,193 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
----
|
7
|
-
|
8
|
-
The `opensearch-api` library provides a Ruby implementation of
|
9
|
-
the [OpenSearch](http://opensearch.com) REST API.
|
10
|
-
|
11
|
-
It does not provide an OpenSearch client; see the
|
12
|
-
[`opensearch-transport`](https://github.com/opensearch-project/opensearch-ruby/tree/main/opensearch-transport) library.
|
13
|
-
|
14
|
-
The library is compatible with Ruby 1.9 and higher.
|
15
|
-
|
16
|
-
It is compatible with OpenSearch's API versions from 1.0.0 till current.
|
17
|
-
|
18
|
-
## Installation
|
19
|
-
|
20
|
-
Install the package from [Rubygems](https://rubygems.org):
|
21
|
-
|
22
|
-
gem install opensearch-api
|
23
|
-
|
24
|
-
To use an unreleased version, either add it to your `Gemfile` for [Bundler](http://gembundler.com):
|
25
|
-
|
26
|
-
gem 'opensearch-api', git: 'git://github.com/opensearch-project/opensearch-ruby.git'
|
27
|
-
|
28
|
-
or install it from a source code checkout:
|
29
|
-
|
30
|
-
git clone https://github.com/opensearch-project/opensearch-ruby
|
31
|
-
cd opensearch-ruby/opensearch-api
|
32
|
-
bundle install
|
33
|
-
rake install
|
34
|
-
|
35
|
-
## Usage
|
36
|
-
|
37
|
-
The library is designed as a group of standalone Ruby modules, which can be mixed into a class
|
38
|
-
providing connection to OpenSearch -- an OpenSearch client.
|
39
|
-
|
40
|
-
### Usage with the `opensearch` gem
|
41
|
-
|
42
|
-
**When you use the client from the [`opensearch-ruby`](https://github.com/opensearch-project/opensearch-ruby/) package,
|
43
|
-
the library modules have been already included**, so you just call the API methods:
|
44
|
-
|
45
|
-
```ruby
|
46
|
-
require 'opensearch'
|
47
|
-
|
48
|
-
client = OpenSearch::Client.new(log: true)
|
49
|
-
|
50
|
-
client.index(index: 'myindex', id: 1, body: { title: 'Test' })
|
51
|
-
# => {"_index"=>"myindex", ... "created"=>true}
|
52
|
-
|
53
|
-
client.search(index: 'myindex', body: { query: { match: { title: 'test' } } })
|
54
|
-
# => {"took"=>2, ..., "hits"=>{"total":5, ...}}
|
55
|
-
```
|
56
|
-
|
57
|
-
### Usage with a custom client
|
58
|
-
|
59
|
-
When you want to mix the library into your own client, it must conform to a following _contract_:
|
60
|
-
|
61
|
-
* It responds to a `perform_request(method, path, params, body, headers)` method,
|
62
|
-
* the method returns an object with `status`, `body` and `headers` methods.
|
1
|
+
- [OpenSearch::API](#opensearchapi)
|
2
|
+
- [Compatibility](#compatibility)
|
3
|
+
- [User Guide](#user-guide)
|
4
|
+
- [License](#license)
|
63
5
|
|
64
|
-
|
65
|
-
|
66
|
-
```ruby
|
67
|
-
require 'multi_json'
|
68
|
-
require 'faraday'
|
69
|
-
require 'opensearch/api'
|
70
|
-
require 'active_support'
|
71
|
-
|
72
|
-
class MySimpleClient
|
73
|
-
include OpenSearch::API
|
74
|
-
|
75
|
-
CONNECTION = ::Faraday::Connection.new url: 'http://localhost:9200'
|
76
|
-
|
77
|
-
def perform_request(method, path, params, body, headers = nil)
|
78
|
-
puts "--> #{method.upcase} #{path} #{params} #{body} #{headers}"
|
79
|
-
|
80
|
-
CONNECTION.run_request \
|
81
|
-
method.downcase.to_sym,
|
82
|
-
path_with_params(path, params),
|
83
|
-
( body ? MultiJson.dump(body): nil ),
|
84
|
-
{'Content-Type' => 'application/json'}
|
85
|
-
end
|
86
|
-
|
87
|
-
private
|
88
|
-
|
89
|
-
def path_with_params(path, params)
|
90
|
-
return path if params.blank?
|
91
|
-
|
92
|
-
case params
|
93
|
-
when String
|
94
|
-
"#{path}?#{params}"
|
95
|
-
when Hash
|
96
|
-
"#{path}?#{params.to_query}"
|
97
|
-
else
|
98
|
-
raise ArgumentError, "Cannot parse params: '#{params}'"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
client = MySimpleClient.new
|
104
|
-
|
105
|
-
p client.cluster.health
|
106
|
-
# --> GET _cluster/health {}
|
107
|
-
# => "{"cluster_name":"opensearch" ... }"
|
108
|
-
|
109
|
-
p client.index index: 'myindex', id: 'custom', body: { title: "Indexing from my client" }
|
110
|
-
# --> PUT myindex/mytype/custom {} {:title=>"Indexing from my client"}
|
111
|
-
# => "{"ok":true, ... }"
|
112
|
-
```
|
113
|
-
|
114
|
-
### Using JSON Builders
|
115
|
-
|
116
|
-
Instead of passing the `:body` argument as a Ruby _Hash_, you can pass it as a _String_, potentially
|
117
|
-
taking advantage of JSON builders such as [JBuilder](https://github.com/rails/jbuilder) or
|
118
|
-
[Jsonify](https://github.com/bsiggelkow/jsonify):
|
119
|
-
|
120
|
-
```ruby
|
121
|
-
require 'jbuilder'
|
122
|
-
|
123
|
-
query = Jbuilder.encode do |json|
|
124
|
-
json.query do
|
125
|
-
json.match do
|
126
|
-
json.title do
|
127
|
-
json.query 'test 1'
|
128
|
-
json.operator 'and'
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
client.search index: 'myindex', body: query
|
135
|
-
|
136
|
-
# 2013-06-25 09:56:05 +0200: GET http://localhost:9200/myindex/_search [status:200, request:0.015s, query:0.011s]
|
137
|
-
# 2013-06-25 09:56:05 +0200: > {"query":{"match":{"title":{"query":"test 1","operator":"and"}}}}
|
138
|
-
# ...
|
139
|
-
# => {"took"=>21, ..., "hits"=>{"total"=>1, "hits"=>[{ "_source"=>{"title"=>"Test 1", ...}}]}}
|
140
|
-
```
|
141
|
-
|
142
|
-
### Using Hash Wrappers
|
143
|
-
|
144
|
-
For a more comfortable access to response properties, you may wrap it in one of the _Hash_ "object access"
|
145
|
-
wrappers, such as [`Hashie::Mash`](https://github.com/intridea/hashie):
|
146
|
-
|
147
|
-
```ruby
|
148
|
-
require 'hashie'
|
149
|
-
|
150
|
-
response = client.search index: 'myindex',
|
151
|
-
body: {
|
152
|
-
query: { match: { title: 'test' } },
|
153
|
-
aggregations: { tags: { terms: { field: 'tags' } } }
|
154
|
-
}
|
155
|
-
|
156
|
-
mash = Hashie::Mash.new response
|
157
|
-
|
158
|
-
mash.hits.hits.first._source.title
|
159
|
-
# => 'Test'
|
160
|
-
|
161
|
-
mash.aggregations.tags.terms.first
|
162
|
-
# => #<Hashie::Mash count=3 term="z">
|
163
|
-
```
|
164
|
-
|
165
|
-
### Using a Custom JSON Serializer
|
166
|
-
|
167
|
-
The library uses the [MultiJson](https://rubygems.org/gems/multi_json/) gem by default,
|
168
|
-
but allows you to set a custom JSON library, provided it uses the standard `load/dump`
|
169
|
-
interface:
|
6
|
+
# OpenSearch::API
|
170
7
|
|
171
|
-
|
172
|
-
OpenSearch::API.settings[:serializer] = JrJackson::Json
|
173
|
-
OpenSearch::API.serializer.dump({foo: 'bar'})
|
174
|
-
# => {"foo":"bar"}
|
175
|
-
```
|
8
|
+
**This library is part of the [`opensearch-ruby`](https://github.com/opensearch-project/opensearch-ruby/) package; please refer to the [USER_GUIDE](../USER_GUIDE.md), unless you want to use this library standalone.**
|
176
9
|
|
177
|
-
|
10
|
+
The `opensearch-api` library provides a Ruby implementation of the OpenSearch REST APIs.
|
178
11
|
|
179
|
-
|
12
|
+
It does not provide an OpenSearch client; see the [`opensearch-transport`](https://github.com/opensearch-project/opensearch-ruby/tree/main/opensearch-transport) library.
|
180
13
|
|
181
|
-
|
14
|
+
## Compatibility
|
182
15
|
|
183
|
-
|
184
|
-
time rake test:unit
|
185
|
-
time rake test:integration
|
186
|
-
```
|
16
|
+
See [COMPATIBILITY](../COMPATIBILITY.md).
|
187
17
|
|
188
|
-
|
18
|
+
## User Guide
|
189
19
|
|
190
|
-
|
20
|
+
See [USER_GUIDE](USER_GUIDE.md).
|
191
21
|
|
192
22
|
## License
|
193
23
|
|
data/Rakefile
CHANGED
@@ -88,7 +88,7 @@ namespace :test do
|
|
88
88
|
filename = 'tmp/artifacts.json'
|
89
89
|
`curl -s <placeholder_opensearch_artifact_url> -o #{filename}`
|
90
90
|
|
91
|
-
unless File.
|
91
|
+
unless File.exist?("./#{filename}")
|
92
92
|
STDERR.puts '[!] Couldn\'t download artifacts file'
|
93
93
|
exit 1
|
94
94
|
end
|
@@ -105,7 +105,7 @@ namespace :test do
|
|
105
105
|
puts 'Downloading zip file:'
|
106
106
|
`curl -s #{zip_url} -o tmp/#{filename}`
|
107
107
|
|
108
|
-
unless File.
|
108
|
+
unless File.exist?("./tmp/#{filename}")
|
109
109
|
STDERR.puts '[!] Couldn\'t download artifact'
|
110
110
|
exit 1
|
111
111
|
end
|
data/USER_GUIDE.md
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
- [User Guide](#user-guide)
|
2
|
+
- [Installation](#installation)
|
3
|
+
- [Usage](#usage)
|
4
|
+
- [Usage with a custom client](#usage-with-a-custom-client)
|
5
|
+
- [Using JSON Builders](#using-json-builders)
|
6
|
+
- [Using Hash Wrappers](#using-hash-wrappers)
|
7
|
+
- [Using a Custom JSON Serializer](#using-a-custom-json-serializer)
|
8
|
+
- [Development](#development)
|
9
|
+
|
10
|
+
# User Guide
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
To add the gem to your project, install it using [RubyGems](https://rubygems.org/):
|
14
|
+
|
15
|
+
```
|
16
|
+
gem install opensearch-api
|
17
|
+
```
|
18
|
+
|
19
|
+
or add it to your Gemfile:
|
20
|
+
```
|
21
|
+
gem opensearch-api
|
22
|
+
```
|
23
|
+
and run:
|
24
|
+
```
|
25
|
+
bundle install
|
26
|
+
```
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
The library is designed as a group of standalone Ruby modules, which can be mixed into a class providing connection to OpenSearch -- an OpenSearch client.
|
31
|
+
|
32
|
+
### Usage with a custom client
|
33
|
+
|
34
|
+
To use the library with a custom client, it must conform to a following _contract_:
|
35
|
+
|
36
|
+
* It responds to a `perform_request(method, path, params, body, headers)` method.
|
37
|
+
* The method returns an object with `status`, `body` and `headers` methods.
|
38
|
+
|
39
|
+
A simple client could look like this (_with a dependency on `active_support` to parse the query params_):
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
require 'multi_json'
|
43
|
+
require 'faraday'
|
44
|
+
require 'opensearch/api'
|
45
|
+
require 'active_support'
|
46
|
+
|
47
|
+
class MySimpleClient
|
48
|
+
include OpenSearch::API
|
49
|
+
|
50
|
+
CONNECTION = ::Faraday::Connection.new url: 'http://localhost:9200'
|
51
|
+
|
52
|
+
def perform_request(method, path, params, body, headers = nil)
|
53
|
+
puts "--> #{method.upcase} #{path} #{params} #{body} #{headers}"
|
54
|
+
|
55
|
+
CONNECTION.run_request \
|
56
|
+
method.downcase.to_sym,
|
57
|
+
path_with_params(path, params),
|
58
|
+
( body ? MultiJson.dump(body): nil ),
|
59
|
+
{'Content-Type' => 'application/json'}
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def path_with_params(path, params)
|
65
|
+
return path if params.blank?
|
66
|
+
|
67
|
+
case params
|
68
|
+
when String
|
69
|
+
"#{path}?#{params}"
|
70
|
+
when Hash
|
71
|
+
"#{path}?#{params.to_query}"
|
72
|
+
else
|
73
|
+
raise ArgumentError, "Cannot parse params: '#{params}'"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
client = MySimpleClient.new
|
79
|
+
|
80
|
+
p client.cluster.health
|
81
|
+
|
82
|
+
p client.index index: 'myindex', id: 'custom', body: { title: "Indexing from my client" }
|
83
|
+
```
|
84
|
+
|
85
|
+
### Using JSON Builders
|
86
|
+
|
87
|
+
Instead of passing the `:body` argument as a Ruby _Hash_, you can pass it as a _String_, potentially taking advantage of JSON builders such as [JBuilder](https://github.com/rails/jbuilder) or [Jsonify](https://github.com/bsiggelkow/jsonify):
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
require 'jbuilder'
|
91
|
+
|
92
|
+
query = Jbuilder.encode do |json|
|
93
|
+
json.query do
|
94
|
+
json.match do
|
95
|
+
json.title do
|
96
|
+
json.query 'test 1'
|
97
|
+
json.operator 'and'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
client.search index: 'myindex', body: query
|
104
|
+
# 2013-06-25 09:56:05 +0200: GET http://localhost:9200/myindex/_search [status:200, request:0.015s, query:0.011s]
|
105
|
+
# 2013-06-25 09:56:05 +0200: > {"query":{"match":{"title":{"query":"test 1","operator":"and"}}}}
|
106
|
+
# ...
|
107
|
+
# => {"took"=>21, ..., "hits"=>{"total"=>1, "hits"=>[{ "_source"=>{"title"=>"Test 1", ...}}]}}
|
108
|
+
```
|
109
|
+
|
110
|
+
### Using Hash Wrappers
|
111
|
+
|
112
|
+
For a more comfortable access to response properties, you may wrap it in one of the _Hash_ "object access" wrappers, such as [`Hashie::Mash`](https://github.com/intridea/hashie):
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
require 'hashie'
|
116
|
+
|
117
|
+
response = client.search index: 'myindex',
|
118
|
+
body: {
|
119
|
+
query: { match: { title: 'test' } },
|
120
|
+
aggregations: { tags: { terms: { field: 'tags' } } }
|
121
|
+
}
|
122
|
+
|
123
|
+
mash = Hashie::Mash.new response
|
124
|
+
|
125
|
+
mash.hits.hits.first._source.title
|
126
|
+
# => 'test'
|
127
|
+
|
128
|
+
mash.aggregations.tags.terms.first
|
129
|
+
# => #<Hashie::Mash count=3 term="z">
|
130
|
+
```
|
131
|
+
|
132
|
+
### Using a Custom JSON Serializer
|
133
|
+
|
134
|
+
The library uses the [MultiJson](https://rubygems.org/gems/multi_json/) gem by default, but allows you to set a custom JSON library, provided it uses the standard `load/dump` interface:
|
135
|
+
|
136
|
+
```ruby
|
137
|
+
OpenSearch::API.settings[:serializer] = JrJackson::Json
|
138
|
+
OpenSearch::API.serializer.dump({foo: 'bar'})
|
139
|
+
# => {"foo":"bar"}
|
140
|
+
```
|
141
|
+
|
142
|
+
## Development
|
143
|
+
|
144
|
+
To work on the code, clone and bootstrap the main repository first -- please see instructions in the main [DEVELOPER_GUIDE](../DEVELOPER_GUIDE.md).
|
145
|
+
|
146
|
+
To run tests:
|
147
|
+
|
148
|
+
```
|
149
|
+
time rake test:unit
|
150
|
+
time rake test:integration
|
151
|
+
```
|
152
|
+
|
153
|
+
We run the test suite for OpenSearch's Rest API tests.
|
154
|
+
|
155
|
+
The `rest_api` needs the test files from OpenSearch. You can run the rake task to download the test artifacts in the root folder of the project. This task needs a running cluster to determine which version and build hash of OpenSearch to use and test against. `TEST_OPENSEARCH_SERVER=http://localhost:9200 rake opensearch:download_artifacts`. This will download the necessary files used for the integration tests to `./tmp`.
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
#
|
3
|
+
# The OpenSearch Contributors require contributions made to
|
4
|
+
# this file be licensed under the Apache-2.0 license or a
|
5
|
+
# compatible open source license.
|
6
|
+
#
|
7
|
+
# Modifications Copyright OpenSearch Contributors. See
|
8
|
+
# GitHub history for details.
|
9
|
+
|
10
|
+
module OpenSearch
|
11
|
+
module API
|
12
|
+
module Cat
|
13
|
+
module Actions
|
14
|
+
# Retrieves info of all PIT segments
|
15
|
+
#
|
16
|
+
# @option arguments [String] :format a short version of the Accept header, e.g. json, yaml
|
17
|
+
# @option arguments [List] :h Comma-separated list of column names to display
|
18
|
+
# @option arguments [Boolean] :help Return help information
|
19
|
+
# @option arguments [List] :s Comma-separated list of column names or column aliases to sort by
|
20
|
+
# @option arguments [Boolean] :v Verbose mode. Display column headers
|
21
|
+
# @option arguments [Hash] :headers Custom HTTP headers
|
22
|
+
def all_pit_segments(arguments = {})
|
23
|
+
arguments = arguments.clone
|
24
|
+
headers = arguments.delete(:headers) || {}
|
25
|
+
|
26
|
+
|
27
|
+
method = OpenSearch::API::HTTP_GET
|
28
|
+
path = '_cat/pit_segments/_all'
|
29
|
+
params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
|
30
|
+
params[:h] = Utils.__listify(params[:h]) if params[:h]
|
31
|
+
|
32
|
+
body = nil
|
33
|
+
perform_request(method, path, params, body, headers).body
|
34
|
+
end
|
35
|
+
|
36
|
+
ParamsRegistry.register(:all_pit_segments, [
|
37
|
+
:format,
|
38
|
+
:h,
|
39
|
+
:help,
|
40
|
+
:s,
|
41
|
+
:v
|
42
|
+
].freeze)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
#
|
3
|
+
# The OpenSearch Contributors require contributions made to
|
4
|
+
# this file be licensed under the Apache-2.0 license or a
|
5
|
+
# compatible open source license.
|
6
|
+
#
|
7
|
+
# Modifications Copyright OpenSearch Contributors. See
|
8
|
+
# GitHub history for details.
|
9
|
+
|
10
|
+
module OpenSearch
|
11
|
+
module API
|
12
|
+
module Cat
|
13
|
+
module Actions
|
14
|
+
# Retrieves info of certain PIT segments
|
15
|
+
#
|
16
|
+
# @option arguments [Hash] body: Must include `pit_id`, which is an array of PIT IDs. (required)
|
17
|
+
# @option arguments [String] :format a short version of the Accept header, e.g. json, yaml
|
18
|
+
# @option arguments [List] :h Comma-separated list of column names to display
|
19
|
+
# @option arguments [Boolean] :help Return help information
|
20
|
+
# @option arguments [List] :s Comma-separated list of column names or column aliases to sort by
|
21
|
+
# @option arguments [Boolean] :v Verbose mode. Display column headers
|
22
|
+
# @option arguments [Hash] :headers Custom HTTP headers
|
23
|
+
def pit_segments(arguments = {})
|
24
|
+
raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
|
25
|
+
|
26
|
+
arguments = arguments.clone
|
27
|
+
headers = arguments.delete(:headers) || {}
|
28
|
+
|
29
|
+
|
30
|
+
method = OpenSearch::API::HTTP_GET
|
31
|
+
path = '_cat/pit_segments'
|
32
|
+
params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
|
33
|
+
params[:h] = Utils.__listify(params[:h]) if params[:h]
|
34
|
+
|
35
|
+
body = arguments[:body]
|
36
|
+
perform_request(method, path, params, body, headers).body
|
37
|
+
end
|
38
|
+
|
39
|
+
ParamsRegistry.register(:pit_segments, [
|
40
|
+
:format,
|
41
|
+
:h,
|
42
|
+
:help,
|
43
|
+
:s,
|
44
|
+
:v
|
45
|
+
].freeze)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
#
|
3
|
+
# The OpenSearch Contributors require contributions made to
|
4
|
+
# this file be licensed under the Apache-2.0 license or a
|
5
|
+
# compatible open source license.
|
6
|
+
#
|
7
|
+
# Modifications Copyright OpenSearch Contributors. See
|
8
|
+
# GitHub history for details.
|
9
|
+
|
10
|
+
module OpenSearch
|
11
|
+
module API
|
12
|
+
module Actions
|
13
|
+
# Creates a point in time.
|
14
|
+
#
|
15
|
+
# @option arguments [String] :index The name(s) of the target index(es) for the PIT. May contain a comma-separated list or a wildcard index pattern. (required)
|
16
|
+
# @option arguments [String] :keep_alive The amount of time to keep the PIT. (required)
|
17
|
+
# @option arguments [String] :preference The node or the shard used to perform the search. (default: random)
|
18
|
+
# @option arguments [String] :routing Specifies to route search requests to a specific shard.
|
19
|
+
# @option arguments [String] :expand_wildcards The type of index that can match the wildcard pattern. Supports comma-separated values. (default: open)
|
20
|
+
# @option arguments [String] :allow_partial_pit_creation Specifies whether to create a PIT with partial failures. (default: false)
|
21
|
+
def create_pit(arguments = {})
|
22
|
+
raise ArgumentError, "Required argument 'index' missing" unless arguments[:index]
|
23
|
+
raise ArgumentError, "Required argument 'keep_alive' missing" unless arguments[:keep_alive]
|
24
|
+
|
25
|
+
arguments = arguments.clone
|
26
|
+
_index = arguments.delete(:index)
|
27
|
+
|
28
|
+
method = OpenSearch::API::HTTP_POST
|
29
|
+
path = "#{Utils.__listify(_index)}/_search/point_in_time"
|
30
|
+
params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
|
31
|
+
body = nil
|
32
|
+
|
33
|
+
perform_request(method, path, params, body).body
|
34
|
+
end
|
35
|
+
|
36
|
+
ParamsRegistry.register(:create_pit, [
|
37
|
+
:keep_alive,
|
38
|
+
:preference,
|
39
|
+
:routing,
|
40
|
+
:expand_wildcards,
|
41
|
+
:allow_partial_pit_creation
|
42
|
+
].freeze)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
#
|
3
|
+
# The OpenSearch Contributors require contributions made to
|
4
|
+
# this file be licensed under the Apache-2.0 license or a
|
5
|
+
# compatible open source license.
|
6
|
+
#
|
7
|
+
# Modifications Copyright OpenSearch Contributors. See
|
8
|
+
# GitHub history for details.
|
9
|
+
|
10
|
+
module OpenSearch
|
11
|
+
module API
|
12
|
+
module Actions
|
13
|
+
# Deletes all PITs.
|
14
|
+
def delete_all_pits(arguments = {})
|
15
|
+
method = OpenSearch::API::HTTP_DELETE
|
16
|
+
path = "_search/point_in_time/_all"
|
17
|
+
params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
|
18
|
+
body = nil
|
19
|
+
|
20
|
+
perform_request(method, path, params, body).body
|
21
|
+
end
|
22
|
+
|
23
|
+
ParamsRegistry.register(:delete_all_pits, [].freeze)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
#
|
3
|
+
# The OpenSearch Contributors require contributions made to
|
4
|
+
# this file be licensed under the Apache-2.0 license or a
|
5
|
+
# compatible open source license.
|
6
|
+
#
|
7
|
+
# Modifications Copyright OpenSearch Contributors. See
|
8
|
+
# GitHub history for details.
|
9
|
+
|
10
|
+
module OpenSearch
|
11
|
+
module API
|
12
|
+
module Actions
|
13
|
+
# Deletes one or several PITs.
|
14
|
+
#
|
15
|
+
# @option arguments [Hash] body: Must include `pit_id`, which is an array of PIT IDs to be deleted. (required)
|
16
|
+
def delete_pit(arguments = {})
|
17
|
+
raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
|
18
|
+
|
19
|
+
method = OpenSearch::API::HTTP_DELETE
|
20
|
+
path = "_search/point_in_time"
|
21
|
+
params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
|
22
|
+
body = arguments[:body]
|
23
|
+
|
24
|
+
perform_request(method, path, params, body).body
|
25
|
+
end
|
26
|
+
|
27
|
+
ParamsRegistry.register(:delete_pit, [].freeze)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
#
|
3
|
+
# The OpenSearch Contributors require contributions made to
|
4
|
+
# this file be licensed under the Apache-2.0 license or a
|
5
|
+
# compatible open source license.
|
6
|
+
#
|
7
|
+
# Modifications Copyright OpenSearch Contributors. See
|
8
|
+
# GitHub history for details.
|
9
|
+
|
10
|
+
module OpenSearch
|
11
|
+
module API
|
12
|
+
module Actions
|
13
|
+
# Gets all PITs.
|
14
|
+
def get_all_pits(arguments = {})
|
15
|
+
method = OpenSearch::API::HTTP_GET
|
16
|
+
path = "_search/point_in_time/_all"
|
17
|
+
params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
|
18
|
+
body = nil
|
19
|
+
|
20
|
+
perform_request(method, path, params, body).body
|
21
|
+
end
|
22
|
+
|
23
|
+
ParamsRegistry.register(:get_all_pits, [].freeze)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|