To add the client to your project, install it using RubyGems:
gem install opensearch-ruby
or add it to your Gemfile:
gem 'opensearch-ruby'
and run:
bundle install
Import the client:
require 'opensearch'
require 'opensearch'
client = OpenSearch::Client.new(
host: 'https://localhost:9200',
user: 'admin',
password: 'admin',
transport_options: { ssl: { verify: false } } # For testing only. Use certificate for validation.
)
# Create an index with non-default settings
index_name = 'ruby-test-index'
index_body = {
'settings': {
'index': {
'number_of_shards': 4
}
}
}
puts 'Creating index'
response = client.indices.create(
index: index_name,
body: index_body
)
puts response
# Add a document to the index
document = {
'title': 'Moneyball',
'director': 'Bennett Miller',
'year': '2011'
}
id = '1'
puts 'Adding document'
response = client.index(
index: index_name,
body: document,
id: id,
refresh: true
)
puts response
# Search for the document
q = 'miller'
query = {
'size': 5,
'query': {
'multi_match': {
'query': q,
'fields': ['title^2', 'director']
}
}
}
puts 'Search results'
response = client.search(
body: query,
index: index_name
)
puts response
# Delete the document
puts 'Deleting document'
response = client.delete(
index: index_name,
id: id
)
puts response
# Delete the index
puts 'Deleting index'
response = client.indices.delete(
index: index_name
)
puts response
The opensearch-dsl
library is designed as a group of standalone Ruby modules, classes and DSL methods, which provide an idiomatic way to build complex search definitions
require 'opensearch'
require 'opensearch/dsl'
include OpenSearch::DSL
response = client.search index: index_name, body: search {
query do
bool do
filter do
term category: "search"
end
must do
match title: "ruby"
end
end
end
}.to_hash
- Index Lifecycle
- Document Lifecycle
- Search
- Bulk
- Advanced Index Actions
- Index Templates
- Transport Options
- Custom HTTP Requests
Requests to OpenSearch Service and OpenSearch Serverless must be signed using the AWS signing protocol. Use opensearch-aws-sigv4
gem in place of opensearch-ruby
gem.
For more information, checkout the USER_GUIDE of opensearch-aws-sigv4 gem.