Ruby integrations for Elasticsearch
APACHE-2.0 License
Bot releases are hidden (Show)
Published by picandocodigo about 2 years ago
security.update_api_key
- Updates attributes of an existing API key. Documentation.get
- Adds new parameter force_synthetic_source
(Boolean) Should this request force synthetic _source? Use this to test if the mapping supports synthetic _source and to get a sense of the worst case performance. Fetches with this enabled will be slower the enabling synthetic source natively in the index.machine_learning.start_trained_model_deployment
- Adds new parameter cache_size
(String) A byte-size value for configuring the inference cache size. For example, 20mb.mget
- Adds new parameter force_synthetic_source
(Boolean) Should this request force synthetic _source? Use this to test if the mapping supports synthetic _source and to get a sense of the worst case performance. Fetches with this enabled will be slower the enabling synthetic source natively in the index.search
- Adds new parameter force_synthetic_source
(Boolean) Should this request force synthetic _source? Use this to test if the mapping supports synthetic _source and to get a sense of the worst case performance. Fetches with this enabled will be slower the enabling synthetic source natively in the index.snapshot.get
- Adds new parameters:
sort
(String) Allows setting a sort order for the result. Defaults to start_time (options: start_time, duration, name, repository, index_count, shard_count, failed_shard_count).size
(Integer) Maximum number of snapshots to return. Defaults to 0 which means return all that match without limit.order
(String) Sort order (options: asc, desc).from_sort_value
(String) Value of the current sort column at which to start retrieval.after
(String) Offset identifier to start pagination from as returned by the 'next' field in the response body.offset
(Integer) Numeric offset to start pagination based on the snapshots matching the request. Defaults to 0.slm_policy_filter
(String) Filter snapshots by a comma-separated list of SLM policy names that snapshots belong to. Accepts wildcards. Use the special pattern '_none' to match snapshots without an SLM policy.Published by picandocodigo over 2 years ago
cluster.delete_voting_config_exclusions
, cluster.post_voting_config_exclusions
- Add new parameter master_timeout
(Time) Timeout for submitting request to master.machine_learning.infer_trained_model_deployment
is renamed to machine_learning.infer_trained_model
. The url /_ml/trained_models/{model_id}/deployment/_infer
is deprecated since 8.3, use /_ml/trained_models/{model_id}/_infer
instead.machine_learning.preview_datafeed
- Adds new parameters:
start
(String) The start time from where the datafeed preview should beginend
(String) The end time when the datafeed preview should stopmachine_learning.start_trained_model_deployment
- Adds new parameters:
number_of_allocations
(Integer) The number of model allocations on each node where the model is deployed.threads_per_allocation
(Integer) The number of threads used by each model allocation during inference.queue_capacity
(Integer) Controls how many inference requests are allowed in the queue at a time.search_mvt
- Adds new parameter: with_labels
(Boolean) If true, the hits and aggs layers will contain additional point features with suggested label positions for the original featuressnapshot.get
- Adds new parameter: index_names
(Boolean) Whether to include the name of each index in the snapshot. Defaults to true.security.has_privileges_user_profile
Determines whether the users associated with the specified profile IDs have all the requested privilegesPublished by picandocodigo over 2 years ago
elastic-transport
to ~> 8.0
Published by picandocodigo over 2 years ago
Tested versions of Ruby for 8.2.0: Ruby (MRI) 2.7, 3.0 and 3.1, JRuby 9.3.
Updated for compatibility with Elasticsearch 8.2's API.
field_caps
filters
An optional set of filters: can include +metadata,-metadata,-nested,-multifield,-parenttypes
Only return results for fields that have one of the types in the listcat.component_templates
- Returns information about existing component_templates templates.ml.get_memory_stats
- Returns information on how ML is using memory.security.activate_user_profile
- Creates or updates the user profile on behalf of another user.security.disable_user_profile
- Disables a user profile so it's not visible in user profile searches.security.enable_user_profile
- Enables a user profile so it's visible in user profile searches.security.get_user_profile
- Retrieves a user profile for the given unique ID.security.suggest_user_profiles
- Get suggestions for user profiles that match specified search criteria.security.update_user_profile_data
- Update application specific data for the user profile of the given unique ID.Published by picandocodigo over 2 years ago
arguments.clone
in the generated code was changed. This would make it so that we would modify the parameters passed in before cloning them, which is undesired. Issue: #1727.Published by picandocodigo over 2 years ago
arguments.clone
in the generated code was changed. This would make it so that we would modify the parameters passed in before cloning them, which is undesired. Issue: #1727.Published by picandocodigo over 2 years ago
Updated for compatibility with Elasticsearch 8.1's API.
indices.forcemerge
- wait_for_completion
Should the request wait until the force merge is completed.indices.get
- features
Return only information on specified index features (options: aliases, mappings, settings).ingest.put_pipeline
if_version
(Integer), required version for optimistic concurrency control for pipeline updates.ml.delete_trained_model
- timeout
controls the amount of time to wait for the model to be deleted. force
(Boolean) true if the model should be forcefully deleted.ml.stop_trained_model_deployment
- allow_no_match
whether to ignore if a wildcard expression matches no deployments. (This includes _all
string or when no deployments have been specified). force
true if the deployment should be forcefully stopped. Adds body
parameter, the stop deployment parameters.nodes.hot_threads
- sort
the sort order for 'cpu' type (default: total) (options: cpu, total)indices.get_index_template
- name
is now a String, a pattern that returned template names must match.knn_search
- index
removes option to use empty string to perform the operation on all indices.ml.close_job
, ml.get_job_stats
, ml.get_jobs
, ml.get_overall_buckets
- Remove allow_no_jobs
parameter.ml.get_datafeed_stats
, ml.get_datafeeds
- Remove allow_no_datafeeds
parameter.nodes.hot_threads
- type
parameter adds mem
option.nodes.info
- metric
updated to use _all
to retrieve all metrics and _none
to retrieve the node identity without any additional metrics. (options: settings, os, process, jvm, thread_pool, transport, http, plugins, ingest, indices, aggregations, _all, _none). index_metric
option shards
changes to shard_stats
.open_point_in_time
- keep_alive
is now a required parameter.search_mvt
- grid_type
parameter adds centroid
option in addition to grid
and point
.security.oidc_authenticate
, security.oidc_logout
, security.oidc_prepare_authentication
.transform.reset_transform
.fleet.search
, fleet.msearch
.Published by picandocodigo over 2 years ago
safe_load
instead of load
when doing the product verification (should only affect Ruby < 3.0).Published by picandocodigo over 2 years ago
First release for the 8.x
branch with a few major changes.
The code for the dependency elasticsearch-transport
has been promoted to its own repository and the project and gem have been renamed to elastic-transport
. This gem now powers elasticsearch
and elastic-enterprise-search
. The elasticsearch-transport
gem won't be maintained after the last release in the 7.x
branch, in favour of elastic-transport
.
This will allow us to better address maintainance in both clients and the library itself.
The elasticsearch-api
library has been generated based on the Elasticsearch 8.0.0 REST specification.
X-Pack has been deprecated. The elasticsearch-xpack
gem will no longer be maintained after the last release in the 7.x
branch. The "X-Pack" integration library codebase was merged into elasticsearch-api
. All the functionality is available from elasticsearch-api
. The xpack
namespace was removed for accessing any APIs other than _xpack
(client.xpack.info
) and _xpack/usage
(client.xpack.usage
). But APIs which were previously available through the xpack
namespace e.g.: client.xpack.machine_learning
are now only available directly: client.machine_learning
.
The code in elasticsearch-api
will no longer validate all the parameters sent. It will only validate the required parameters such as those needed to build the path for the request. But other API parameters are going to be validated by Elasticsearch. This provides better forwards and backwards compatibility in the client.
In previous versions of the client, calling an API endpoint would return the JSON body of the response. With 8.0
, we are returning a new Response object Elasticsearch::API::Response
. It still behaves like a Hash to maintain backwards compatibility, but adds the status
and headers
methods from the Elastic::Transport:Transport::Response
object:
elastic_ruby(main)> response = client.info
=> #<Elasticsearch::API::Response:0x000055752b0c50a8
@response=
#<Elastic::Transport::Transport::Response:0x000055752b0c50f8
@body=
{"name"=>"instance",
"cluster_name"=>"elasticsearch-8-0-0-SNAPSHOT-rest-test",
"cluster_uuid"=>"oIfRARuYRGuVYybjxQJ87w",
"version"=>
{"number"=>"8.0.0-SNAPSHOT",
"build_flavor"=>"default",
"build_type"=>"docker",
"build_hash"=>"7e23c54eb31cc101d1a4811b9ab9c4fd33ed6a8d",
"build_date"=>"2021-11-04T00:21:32.464485627Z",
"build_snapshot"=>true,
"lucene_version"=>"9.0.0",
"minimum_wire_compatibility_version"=>"7.16.0",
"minimum_index_compatibility_version"=>"7.0.0"},
"tagline"=>"You Know, for Search"},
@headers={"X-elastic-product"=>"Elasticsearch", "content-type"=>"application/json", "content-length"=>"567"},
@status=200>>
elastic_ruby(main)> response.status
=> 200
elastic_ruby(main)> response.headers
=> {"X-elastic-product"=>"Elasticsearch", "content-type"=>"application/json", "content-length"=>"567"}
elastic_ruby(main)> response['name']
=> "instance"
elastic_ruby(main)> response['tagline']
=> "You Know, for Search"
Published by picandocodigo over 2 years ago
413
error.Published by picandocodigo almost 3 years ago
Bugfix for #1475, an issue where if you indexed a document with an id such as an id
, it would get escaped to an+id
instead of an%20id
when using index
or create
. This would result in the document id being an+id
instead of the intended value an id
.
Published by picandocodigo almost 3 years ago
Patch release corresponding with Elastic Stack version 7.16.1 that addresses the Apache Log4j2 vulnerability, more information.
The only changes in the client since 7.16.0 are a few minor updates for the Compatibility mode with 8.0. We added the compatibility header in 7.13.0
, but now we have integration tests and compatibility tests for version 7.x
of the client with Elasticsearch 8.0
.
Published by picandocodigo almost 3 years ago
delay_on_retry
parameter, a value in milliseconds to wait between each failed connection, thanks DinoPullerUqido! Pull Request and backport.ca_fingerprint
option. This will verify that the fingerprint of the CA certificate that has signed the certificate of the server matches the supplied value:ca_fingerprint = '64F2593F...'
client = Elasticsearch::Client.new(
host: 'https://elastic:changeme@localhost:9200',
transport_options: { ssl: { verify: false } },
ca_fingerprint: ca_fingerprint
)
The verification will be run once per connection.
compression
is set to true
, the client will now gzip the request body properly and use the appropiate headers. Thanks johnnyshields! Pull Request and backport.count
- The API is documented as using GET
, but it supports both GET and POST on the Elasticsearch side. So it was updated to only use POST
when there's a body present, or else use GET
. Elasticsearch would still accept a body with GET
, but to be more semantically correct in the clients we use POST
when there's a body.delete_index_template
was updated to support the ignore_404
parameter to ignore 404 errors when attempting to delete a non-existing template.ingest.put_pipeline
adds new parameter if_version
: Required version for optimistic concurrency control for pipeline updates.ml.put_trained_model
: adds new parameter defer_definition_decompression
: If set to true
and a compressed_definition
is provided, the request defers definition decompression and skips relevant validations.nodes.hot_threads
adds new parameter sort
: The sort order for 'cpu' type (default: total) (options: cpu, total).open_point_in_time
: keep_alive
is now a required parameter.search_mvt
: adds new parameter track_total_hits
: Indicate if the number of documents that match the query should be tracked. A number can also be specified, to accurately track the total hit count up to the number.transform.preview_transform
: adds new parameter transform_id
. Body is now optional and the API will use GET
or POST
depending on the presence of a body.fleet.global_checkpoints
get_script_context
get_script_language
indices.resolve_index
monitoring.bulk
rank_eval
searchable_snapshots.mount
searchable_snapshots.stats
security.clear_cached_service_tokens
security.create_service_token
security.delete_service_token
security.get_service_accounts
security.get_service_credentials
shutdown.delete_node
shutdown.get_node
shutdown.put_node
terms_enum
fleet.mseach
fleet.search
indices.modify_data_stream
ml.infer_trained_model_deployment
ml.start_trained_model_deployment
ml.stop_trained_model_deployment
migration.get_feature_upgrade_status
migration.post_feature_upgrade_status
security.enroll_kibana
security.enroll_node
transform.updgrade_transforms
Published by picandocodigo almost 3 years ago
First pre-release of elasticsearch 8.x
🥳
The code for the dependency elasticsearch-transport
has been promoted to its own repository and the project and gem have been renamed to elastic-transport
. This gem now powers elasticsearch
and elastic-enterprise-search
. The elasticsearch-transport
gem won't be maintained after the last release in the 7.x
branch, in favour of elastic-transport
.
X-Pack has been deprecated. The elasticsearch-xpack
gem will no longer be maintained after the last release in the 7.x
branch. The "X-Pack" integration library codebase was merged into elasticsearch-api
. All the functionality is available from elasticsearch-api
. The xpack
namespace was removed for accessing any APIs other than _xpack
(client.xpack.info
) and _xpack/usage
(client.xpack.usage
). But APIs which were previously available through the xpack
namespace e.g.: client.xpack.machine_learning
are now only available directly: client.machine_learning
.
The code in elasticsearch-api
will no longer validate all the parameters sent. It will only validate the required parameters such as those needed to build the path for the request. But other API parameters are going to be validated by Elasticsearch. This provides better forwards and backwards compatibility in the client.
In previous versions of the client, calling an API endpoint would return the JSON body of the response. With 8.0
, we are returning a new Response object Elasticsearch::API::Response
. It still behaves like a Hash to maintain backwards compatibility, but adds the status
and headers
methods from the Elastic::Transport:Transport::Response
object:
elastic_ruby(main)> response = client.info
=> #<Elasticsearch::API::Response:0x000055752b0c50a8
@response=
#<Elastic::Transport::Transport::Response:0x000055752b0c50f8
@body=
{"name"=>"instance",
"cluster_name"=>"elasticsearch-8-0-0-SNAPSHOT-rest-test",
"cluster_uuid"=>"oIfRARuYRGuVYybjxQJ87w",
"version"=>
{"number"=>"8.0.0-SNAPSHOT",
"build_flavor"=>"default",
"build_type"=>"docker",
"build_hash"=>"7e23c54eb31cc101d1a4811b9ab9c4fd33ed6a8d",
"build_date"=>"2021-11-04T00:21:32.464485627Z",
"build_snapshot"=>true,
"lucene_version"=>"9.0.0",
"minimum_wire_compatibility_version"=>"7.16.0",
"minimum_index_compatibility_version"=>"7.0.0"},
"tagline"=>"You Know, for Search"},
@headers={"X-elastic-product"=>"Elasticsearch", "content-type"=>"application/json", "content-length"=>"567"},
@status=200>>
elastic_ruby(main)> response.status
=> 200
elastic_ruby(main)> response.headers
=> {"X-elastic-product"=>"Elasticsearch", "content-type"=>"application/json", "content-length"=>"567"}
elastic_ruby(main)> response['name']
=> "instance"
elastic_ruby(main)> response['tagline']
=> "You Know, for Search"
Published by picandocodigo about 3 years ago
indices.disk_usage
. indices.field_usage_stats
, nodes.clear_repositories_metering_archive
, get_repositories_metering_info
, search_mvt
index
parameter is now required for open_point_in_time
.index_metric
parameter in nodes.stats
adds the shards
option.ml.put_job
: ignore_unavailable
, allow_no_indices
, ignore_throttled
, expand_wildcards
.security.query_api_keys
.Published by picandocodigo about 3 years ago
Published by picandocodigo about 3 years ago
Published by picandocodigo about 3 years ago
Added check that client is connected to an Elasticsearch cluster. If the client isn't connected to a supported Elasticsearch cluster the UnsupportedProductError
exception will be raised.
This release changes the way in which the transport layer and the client interact. Previously, when using elasticsearch-transport
, Elasticsearch::Transport::Client
had a convenient wrapper, so it could be used as Elasticsearch::Client
. Now, we are decoupling the transport layer from the Elasticsearch client. If you're using the elasticsearch
gem, not much will change. It will instantiate a new Elasticsearch::Transport::Client
when you instantiate Elasticsearch::Client
and the endpoints from elasticsearch-api
will be available.
Elasticsearch::Client
has an attr_accessor
for the transport instance:
> client = Elasticsearch::Client.new
> client.transport.class
=> Elasticsearch::Transport::Client
> client.transport.transport.class
=> Elasticsearch::Transport::Transport::HTTP::Faraday
The interaction with elasticsearch-api
remains unchanged. You can use the API endpoints just like before:
> client.info
=> {"name"=>"instance",
"cluster_name"=>"elasticsearch",
"cluster_uuid"=>"id",
"version"=>
{"number"=>"7.14.0",
...
},
"tagline"=>"You Know, for Search"}
Or perform request directly from the client which will return an Elasticsearch::Transport::Response
object:
> client.perform_request('GET', '/')
# This is the same as doing client.transport.perform_request('GET', '/')
=> #<Elasticsearch::Transport::Transport::Response:0x000055c80bf94bc8
@body=
{"name"=>"instance",
"cluster_name"=>"elasticsearch",
"cluster_uuid"=>"id",
"version"=>
{"number"=>"7.14.0-SNAPSHOT",
...
},
"tagline"=>"You Know, for Search"},
@headers=
{"content-type"=>"application/json; charset=UTF-8",
"content-length"=>"571",
...
},
@status=200>
If you have any problems, please report them in this issue.
Code is now generated from Elastic artifacts instead of checked out code of Elasticsearch. See the Generator README for more info.
msearch
, msearch_template
and search_template
remove query_and_fetch
and dfs_query_and_fetch
options from the search_type
parameter.include_repository
in snapshot.get
: (boolean) Whether to include the repository name in the snapshot info. Defaults to true.X-Pack is being deprecated. The first time using xpack
on the client, a warning will be triggered. Please check this issue for more information.
index_lifecycle_management.migrate_to_data_tiers
, machine_learning.reset_job
, security.saml_authenticate
, security.saml_complete_logout
, security.saml_invalidate
, security.saml_logout
, security.saml_prepare_authentication
, security.saml_service_provider_metadata
, sql.delete_async
, sql.get_async
, sql.get_async_status
, terms_enum
.machine_learning.infer_trained_model_deployment
, machine_learning.start_trained_model_deployment
, machine_learning.stop_trained_model_deployment
.indices.freeze
and indices.unfreeze
: Frozen indices are deprecated because they provide no benefit given improvements in heap memory utilization. They will be removed in a future release.This is a pre-release, but there are some important changes coming in version 7.14.0 of the client:
This release changes the way in which the transport layer and the client interact. Previously, when using elasticsearch-transport
, Elasticsearch::Transport::Client
had a convenient wrapper, so it could be used as Elasticsearch::Client
. Now, we are decoupling the transport layer from the Elasticsearch client. If you're using the elasticsearch
gem, not much will change. It will instantiate a new Elasticsearch::Transport::Client
when you instantiate Elasticsearch::Client
and the endpoints from elasticsearch-api
will be available.
Elasticsearch::Client
has an attr_accessor
for the transport instance:
> client = Elasticsearch::Client.new
> client.transport.class
=> Elasticsearch::Transport::Client
> client.transport.transport.class
=> Elasticsearch::Transport::Transport::HTTP::Faraday
The interaction with elasticsearch-api
remains unchanged. You can use the API endpoints just like before:
> client.info
=> {"name"=>"instance",
"cluster_name"=>"elasticsearch",
"cluster_uuid"=>"id",
"version"=>
{"number"=>"7.14.0",
...
},
"tagline"=>"You Know, for Search"}
Or perform request directly from the client which will return an Elasticsearch::Transport::Response
object:
> client.perform_request('GET', '/')
# This is the same as doing client.transport.perform_request('GET', '/')
=> #<Elasticsearch::Transport::Transport::Response:0x000055c80bf94bc8
@body=
{"name"=>"instance",
"cluster_name"=>"elasticsearch",
"cluster_uuid"=>"id",
"version"=>
{"number"=>"7.14.0-SNAPSHOT",
...
},
"tagline"=>"You Know, for Search"},
@headers=
{"content-type"=>"application/json; charset=UTF-8",
"content-length"=>"571",
...
},
@status=200>
If you have any problems, please report them in this issue.
Published by picandocodigo over 3 years ago