Search::Elasticsearch::Client::7_0::Direct - Thin client with full support for Elasticsearch 7.x APIs
version 8.00
Create a client:
use Search::Elasticsearch; my $e = Search::Elasticsearch->new( client => '7_0::Direct' );
Index a doc:
$e->index( index => 'my_index', type => 'blog_post', id => 123, body => { title => "Elasticsearch clients", content => "Interesting content...", date => "2013-09-23" } );
Get a doc:
$e->get( index => 'my_index', type => 'my_type', id => 123 );
Search for docs:
$results = $e->search( index => 'my_index', body => { query => { match => { title => "elasticsearch" } } } );
Index-level requests:
$e->indices->create( index => 'my_index' ); $e->indices->delete( index => 'my_index' )
Ingest pipeline requests:
$e->ingest->get_pipeline( id => 'apache-logs' );
Cluster-level requests:
$health = $e->cluster->health;
Node-level requests:
$info = $e->nodes->info; $stats = $e->nodes->stats;
Snapshot and restore:
$e->snapshot->create_repository( repository => 'my_backups', type => 'fs', settings => { location => '/mnt/backups' } ); $e->snapshot->create( repository => 'my_backups', snapshot => 'backup_2014' );
Task management:
$e->tasks->list;
`cat` debugging:
say $e->cat->allocation; say $e->cat->health;
Cross-cluster replication requests:
say $e->ccr->follow;
Index lifecycle management requests:
say $e->ilm->put_lifecycle;
The Search::Elasticsearch::Client::7_0::Direct class provides the Elasticsearch 7.x compatible client returned by:
$e = Search::Elasticsearch->new( client => "7_0::Direct" # default );
It is intended to be as close as possible to the native REST API that Elasticsearch uses, so that it is easy to translate the Elasticsearch reference documentation for an API to the equivalent in this client.
This class provides the methods for document CRUD, bulk document CRUD and search. It also provides access to clients for managing indices and the cluster.
This version of the client supports the Elasticsearch 7.0 branch, which is not backwards compatible with earlier branches.
If you need to talk to a version of Elasticsearch before 7.0.0, please install one of the following modules:
Search::Elasticsearch::Client::6_0
Search::Elasticsearch::Client::5_0
Search::Elasticsearch::Client::2_0
Search::Elasticsearch::Client::1_0
Search::Elasticsearch::Client::0_90
Parameters can be passed to any request method as a list or as a hash reference. The following two statements are equivalent:
$e->search( size => 10 ); $e->search({size => 10});
Any values that should be included in the URL path, eg /{index}/{type} should be passed as top level parameters:
/{index}/{type}
$e->search( index => 'my_index', type => 'my_type' );
Alternatively, you can specify a path parameter directly:
path
$e->search( path => '/my_index/my_type' );
Any values that should be included in the query string should be passed as top level parameters:
$e->search( size => 10 );
If you pass in a \%params hash, then it will be included in the query string parameters without any error checking. The following:
\%params
$e->search( size => 10, params => { from => 6, size => 6 })
would result in this query string:
?from=6&size=10
The request body should be passed in the body key:
body
$e->search( body => { query => {...} } );
The body can also be a UTF8-decoded string, which will be converted into UTF-8 bytes and passed as is:
$e->indices->analyze( body => "The quick brown fox");
Elasticsearch 7.0.0 and above no longer accepts truthy and falsey values for booleans. Instead, it will accept only a JSON true or false, or the string equivalents "true" or "false".
true
false
"true"
"false"
In the Perl client, you can use the following values:
True: true, \1, or a JSON::PP::Boolean object.
\1
False: false, \0, or a JSON::PP::Boolean object.
\0
Any API which returns a JSON body accepts a filter_path parameter which will filter the JSON down to only the specified paths. For instance, if you are running a search request and only want the total hits and the _source field for each hit (without the _id, _index etc), you can do:
filter_path
total
_source
_id
_index
$e->search( query => {...}, filter_paths => [ 'hits.total', 'hits.hits._source' ] );
Normally, any HTTP status code outside the 200-299 range will result in an error being thrown. To suppress these errors, you can specify which status codes to ignore in the ignore parameter.
ignore
$e->indices->delete( index => 'my_index', ignore => 404 );
This is most useful for Missing errors, which are triggered by a 404 status code when some requested resource does not exist.
404
Multiple error codes can be specified with an array:
$e->indices->delete( index => 'my_index', ignore => [404,409] );
bulk_helper_class
The class to use for the "bulk_helper()" method. Defaults to Search::Elasticsearch::Client::7_0::Bulk.
scroll_helper_class
The class to use for the "scroll_helper()" method. Defaults to Search::Elasticsearch::Client::7_0::Scroll.
info()
$info = $e->info
Returns information about the version of Elasticsearch that the responding node is running.
ping()
$e->ping
Pings a node in the cluster and returns 1 if it receives a 200 response, otherwise it throws an error.
1
200
indices()
$indices_client = $e->indices;
Returns a Search::Elasticsearch::Client::7_0::Direct::Indices object which can be used for managing indices, eg creating, deleting indices, managing mapping, index settings etc.
ingest()
$ingest_client = $e->ingest;
Returns a Search::Elasticsearch::Client::7_0::Direct::Ingest object which can be used for managing ingest pipelines.
cluster()
$cluster_client = $e->cluster;
Returns a Search::Elasticsearch::Client::7_0::Direct::Cluster object which can be used for managing the cluster, eg cluster-wide settings and cluster health.
nodes()
$node_client = $e->nodes;
Returns a Search::Elasticsearch::Client::7_0::Direct::Nodes object which can be used to retrieve node info and stats.
snapshot()
$snapshot_client = $e->snapshot;
Returns a Search::Elasticsearch::Client::7_0::Direct::Snapshot object which is used for managing backup repositories and creating and restoring snapshots.
tasks()
$tasks_client = $e->tasks;
Returns a Search::Elasticsearch::Client::7_0::Direct::Tasks object which is used for accessing the task management API.
cat()
$cat_client = $e->cat;
Returns a Search::Elasticsearch::Client::7_0::Direct::Cat object which can be used to retrieve simple to read text info for debugging and monitoring an Elasticsearch cluster.
ccr()
$ccr_client = $e->ccr;
Returns a Search::Elasticsearch::Client::7_0::Direct::CCR object which can be used to handle cross-cluster replication requests.
ilm()
$ilm_client = $e->ilm;
Returns a Search::Elasticsearch::Client::7_0::Direct::ILM object which can be used to handle index lifecycle management requests.
These methods allow you to perform create, index, update and delete requests for single documents:
index()
$response = $e->index( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # optional, otherwise auto-generated body => { document } # required );
The index() method is used to index a new document or to reindex an existing document.
Query string parameters: error_trace, human, if_primary_term, if_seq_no, op_type, parent, pipeline, refresh, routing, timeout, version, version_type, wait_for_active_shards
error_trace
human
if_primary_term
if_seq_no
op_type
parent
pipeline
refresh
routing
timeout
version
version_type
wait_for_active_shards
See the index docs for more information.
create()
$response = $e->create( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # required body => { document } # required );
The create() method works exactly like the "index()" method, except that it will throw a Conflict error if a document with the same index, type and id already exists.
Conflict
index
type
id
Query string parameters: consistency, error_trace, human, op_type, parent, refresh, routing, timeout, version, version_type
consistency
See the create docs for more information.
get()
$response = $e->get( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # required );
The get() method will retrieve the document with the specified index, type and id, or will throw a Missing error.
Missing
Query string parameters: _source, _source_excludes, _source_includes, error_trace, human, parent, preference, realtime, refresh, routing, stored_fields, version, version_type
_source_excludes
_source_includes
preference
realtime
stored_fields
See the get docs for more information.
get_source()
$response = $e->get_source( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # required );
The get_source() method works just like the "get()" method except that it returns just the _source field (the value of the body parameter in the "index()" method) instead of returning the _source field plus the document metadata, ie the _index, _type etc.
_type
Query string parameters: _source, _source_excludes, _source_includes, error_trace, human, parent, preference, realtime, refresh, routing, version, version_type
See the get_source docs for more information.
exists()
$response = $e->exists( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # required );
The exists() method returns 1 if a document with the specified index, type and id exists, or an empty string if it doesn't.
See the exists docs for more information.
delete()
$response = $e->delete( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # required );
The delete() method will delete the document with the specified index, type and id, or will throw a Missing error.
Query string parameters: error_trace, human, if_primary_term, if_seq_no, parent, refresh, routing, timeout, version, version_type, wait_for_active_shards
See the delete docs for more information.
update()
$response = $e->update( index => 'index_name', # required type => 'type_name', # required id => 'doc_id', # required body => { update } # required );
The update() method updates a document with the corresponding index, type and id if it exists. Updates can be performed either by:
providing a partial document to be merged in to the existing document:
$response = $e->update( ..., body => { doc => { new_field => 'new_value'}, } );
with an inline script:
$response = $e->update( ..., body => { script => { source => "ctx._source.counter += incr", params => { incr => 6 } } } );
with an indexed script:
$response = $e->update( ..., body => { script => { id => $id, lang => 'painless', params => { incr => 6 } } } );
See indexed scripts for more information.
with a script stored as a file:
$response = $e->update( ..., body => { script => { file => 'counter', lang => 'painless', params => { incr => 6 } } } );
See scripting docs for more information.
Query string parameters: _source, _source_excludes, _source_includes, error_trace, fields, human, if_primary_term, if_seq_no, lang, parent, refresh, retry_on_conflict, routing, timeout, version, version_type, wait_for_active_shards
fields
lang
retry_on_conflict
See the update docs for more information.
termvectors()
$results = $e->termvectors( index => $index, # required type => $type, # required id => $id, # optional body => {...} # optional )
The termvectors() method retrieves term and field statistics, positions, offsets and payloads for the specified document, assuming that termvectors have been enabled.
Query string parameters: error_trace, field_statistics, fields, human, offsets, parent, payloads, positions, preference, realtime, routing, term_statistics, version, version_type
field_statistics
offsets
payloads
positions
term_statistics
See the termvector docs for more information.
The bulk document CRUD methods are used for running multiple CRUD actions within a single request. By reducing the number of network requests that need to be made, bulk requests greatly improve performance.
bulk()
$response = $e->bulk( index => 'index_name', # required if type specified type => 'type_name', # optional body => [ actions ] # required );
See Search::Elasticsearch::Client::7_0::Bulk and "bulk_helper()" for a helper module that makes bulk indexing simpler to use.
The bulk() method can perform multiple "index()", "create()", "delete()" or "update()" actions with a single request. The body parameter expects an array containing the list of actions to perform.
An action consists of an initial metadata hash ref containing the action type, plus the associated metadata, eg :
{ delete => { _index => 'index', _type => 'type', _id => 123 }}
The index and create actions then expect a hashref containing the document itself:
create
{ create => { _index => 'index', _type => 'type', _id => 123 }}, { title => "A newly created document" }
And the update action expects a hashref containing the update commands, eg:
update
{ update => { _index => 'index', _type => 'type', _id => 123 }}, { script => "ctx._source.counter+=1" }
Each action can include the same parameters that you would pass to the equivalent "index()", "create()", "delete()" or "update()" request, except that _index, _type and _id must be specified with the preceding underscore. All other parameters can be specified with or without the underscore.
For instance:
$response = $e->bulk( index => 'index_name', # default index name type => 'type_name', # default type name body => [ # create action { create => { _index => 'not_the_default_index', _type => 'not_the_default_type', _id => 123 }}, { title => 'Foo' }, # index action { index => { _id => 124 }}, { title => 'Foo' }, # delete action { delete => { _id => 126 }}, # update action { update => { _id => 126 }}, { script => "ctx._source.counter+1" } ] );
Each action is performed separately. One failed action will not cause the others to fail as well.
Query string parameters: _source, _source_excludes, _source_includes, error_trace, fields, human, pipeline, refresh, routing, timeout, wait_for_active_shards
See the bulk docs for more information.
bulk_helper()
$bulk_helper = $e->bulk_helper( @args );
Returns a new instance of the class specified in the "bulk_helper_class", which defaults to Search::Elasticsearch::Client::7_0::Bulk.
mget()
$results = $e->mget( index => 'default_index', # optional, required when type specified type => 'default_type', # optional body => { docs or ids } # required );
The mget() method will retrieve multiple documents with a single request. The body consists of an array of documents to retrieve:
$results = $e->mget( index => 'default_index', type => 'default_type', body => { docs => [ { _id => 1}, { _id => 2, _type => 'not_the_default_type' } ] } );
You can also pass any of the other parameters that the "get()" request accepts.
If you have specified an index and type, you can just include the ids of the documents to retrieve:
ids
$results = $e->mget( index => 'default_index', type => 'default_type', body => { ids => [ 1, 2, 3] } );
Query string parameters: _source, _source_excludes, _source_includes, error_trace, human, preference, realtime, refresh, routing, stored_fields
See the mget docs for more information.
mtermvectors()
$results = $e->mtermvectors( index => $index, # required if type specified type => $type, # optional body => { } # optional )
Runs multiple "termvector()" requests in a single request, eg:
$results = $e->mtermvectors( index => 'test', body => { docs => [ { _type => 'test', _id => 1, fields => ['text'] }, { _type => 'test', _id => 2, payloads => 1 }, ] } );
Query string parameters: error_trace, field_statistics, fields, human, ids, offsets, parent, payloads, positions, preference, realtime, routing, term_statistics, version, version_type
See the mtermvectors docs for more information.
The search methods are used for querying documents in one, more or all indices and of one, more or all types:
search()
$results = $e->search( index => 'index' | \@indices, # optional type => 'type' | \@types, # optional body => { search params } # optional );
The search() method searches for matching documents in one or more indices. It is just as easy to search a single index as it is to search all the indices in your cluster. It can also return aggregations highlighted snippets and did-you-mean or search-as-you-type suggestions.
The lite version of search allows you to specify a query string in the q parameter, using the Lucene query string syntax:
q
$results = $e->search( q => 'title:(elasticsearch clients)');
However, the preferred way to search is by using the Query DSL to create a query, and passing that query in the request body:
query
$results = $e->search( body => { query => { match => { title => 'Elasticsearch clients'} } } );
Query string parameters: _source, _source_excludes, _source_includes, allow_no_indices, allow_partial_search_results, analyze_wildcard, analyzer, batched_reduce_size, default_operator, df, docvalue_fields, error_trace, expand_wildcards, explain, from, human, ignore_throttled, ignore_unavailable, lenient, max_concurrent_shard_requests, pre_filter_shard_size, preference, q, request_cache, rest_total_hits_as_int, routing, scroll, search_type, seq_no_primary_term, size, sort, stats, stored_fields, suggest_field, suggest_mode, suggest_size, suggest_text, terminate_after, timeout, track_scores, track_total_hits, typed_keys, version
allow_no_indices
allow_partial_search_results
analyze_wildcard
analyzer
batched_reduce_size
default_operator
df
docvalue_fields
expand_wildcards
explain
from
ignore_throttled
ignore_unavailable
lenient
max_concurrent_shard_requests
pre_filter_shard_size
request_cache
rest_total_hits_as_int
scroll
search_type
seq_no_primary_term
size
sort
stats
suggest_field
suggest_mode
suggest_size
suggest_text
terminate_after
track_scores
track_total_hits
typed_keys
See the search reference for more information.
Also see "send_get_body_as" in Search::Elasticsearch::Transport.
count()
$results = $e->count( index => 'index' | \@indices, # optional type => 'type' | \@types, # optional body => { query } # optional )
The count() method returns the total count of all documents matching the query:
$results = $e->count( body => { query => { match => { title => 'Elasticsearch clients' } } } );
Query string parameters: allow_no_indices, analyze_wildcard, analyzer, default_operator, df, error_trace, expand_wildcards, human, ignore_throttled, ignore_unavailable, lenient, lowercase_expanded_terms min_score, preference, q, routing, terminate_after
lowercase_expanded_terms
min_score
See the count docs for more information.
search_template()
$results = $e->search_template( index => 'index' | \@indices, # optional type => 'type' | \@types, # optional body => { search params } # required );
Perform a search by specifying a template (either predefined or defined within the body) and parameters to use with the template, eg:
$results = $e->search_template( body => { source => { query => { match => { "{{my_field}}" => "{{my_value}}" } }, size => "{{my_size}}" }, params => { my_field => 'foo', my_value => 'bar', my_size => 6 } } );
See the search template docs for more information.
Query string parameters: allow_no_indices, error_trace, expand_wildcards, explain, human, ignore_throttled, ignore_unavailable, preference, profile, rest_total_hits_as_int, scroll, search_type, typed_keys
profile
render_search_template()
$response = $e->render_search_template( id => 'id', # optional body => { template } # optional );
Renders the template, filling in the passed-in parameters and returns the resulting JSON, eg:
$results = $e->render_search_template( body => { source => { query => { match => { "{{my_field}}" => "{{my_value}}" } }, size => "{{my_size}}" }, params => { my_field => 'foo', my_value => 'bar', my_size => 6 } } );
scroll()
$results = $e->scroll( scroll => '1m', body => { scroll_id => $id } );
When a "search()" has been performed with the scroll parameter, the scroll() method allows you to keep pulling more results until the results are exhausted.
See "scroll_helper()" and Search::Elasticsearch::Client::7_0::Scroll for a helper utility which makes managing scroll requests much easier.
Query string parameters: error_trace, human, rest_total_hits_as_int, scroll, scroll_id
scroll_id
See the scroll docs and the search_type docs for more information.
clear_scroll()
$response = $e->clear_scroll( body => { scroll_id => $id | \@ids # required } );
The clear_scroll() method can clear unfinished scroll requests, freeing up resources on the server.
scroll_helper()
$scroll_helper = $e->scroll_helper( @args );
Returns a new instance of the class specified in the "scroll_helper_class", which defaults to Search::Elasticsearch::Client::7_0::Scroll.
msearch()
$results = $e->msearch( index => 'default_index' | \@indices, # optional type => 'default_type' | \@types, # optional body => [ searches ] # required );
The msearch() method allows you to perform multiple searches in a single request. Similar to the "bulk()" request, each search request in the body consists of two hashes: the metadata hash then the search request hash (the same data that you'd specify in the body of a "search()" request). For instance:
$results = $e->msearch( index => 'default_index', type => ['default_type_1', 'default_type_2'], body => [ # uses defaults {}, { query => { match_all => {} }}, # uses a custom index { index => 'not_the_default_index' }, { query => { match_all => {} }} ] );
Query string parameters: error_trace, human, max_concurrent_searches, max__concurrent_shard_requests, pre_filter_shard_size, rest_total_hits_as_int, search_type, typed_keys
max_concurrent_searches
max__concurrent_shard_requests
See the msearch docs for more information.
msearch_template()
$results = $e->msearch_template( index => 'default_index' | \@indices, # optional type => 'default_type' | \@types, # optional body => [ search_templates ] # required );
The msearch_template() method allows you to perform multiple searches in a single request using search templates. Similar to the "bulk()" request, each search request in the body consists of two hashes: the metadata hash then the search request hash (the same data that you'd specify in the body of a "search()" request). For instance:
$results = $e->msearch( index => 'default_index', type => ['default_type_1', 'default_type_2'], body => [ # uses defaults {}, { source => { query => { match => { user => "{{user}}" }}} params => { user => 'joe' }}, # uses a custom index { index => 'not_the_default_index' }, { source => { query => { match => { user => "{{user}}" }}} params => { user => 'joe' }}, ] );
Query string parameters: error_trace, human, max_concurrent_searches, rest_total_hits_as_int, search_type, typed_keys
See the msearch-template docs for more information.
explain()
$response = $e->explain( index => 'my_index', # required type => 'my_type', # required id => 123, # required body => { search } # required );
The explain() method explains why the specified document did or did not match a query, and how the relevance score was calculated. For instance:
$response = $e->explain( index => 'my_index', type => 'my_type', id => 123, body => { query => { match => { title => 'Elasticsearch clients' } } } );
Query string parameters: _source, _source_excludes, _source_includes, analyze_wildcard, analyzer, default_operator, df, error_trace, human, lenient, parent, preference, q, routing, stored_fields
See the explain docs for more information.
field_caps()
$response = $e->field_caps( index => 'index' | \@indices, # optional body => { filters } # optional );
The field-caps API returns field types and abilities, merged across indices.
field-caps
Query string parameters: allow_no_indices, error_trace, expand_wildcards, fields, human, ignore_unavailable
See the field-caps docs for more information.
search_shards()
$response = $e->search_shards( index => 'index' | \@indices, # optional )
The search_shards() method returns information about which shards on which nodes will execute a search request.
Query string parameters: allow_no_indices, error_trace, expand_wildcards, human, ignore_unavailable, local, preference, routing
local
See the search-shards docs for more information.
rank_eval()
$result = $e->rank_eval( index => 'index' | \@indices, # optional body => {...} # required );
The ranking evaluation API provides a way to execute test cases to determine whether search results are improving or worsening.
Query string parameters: allow_no_indices, error_trace, expand_wildcards, filter_path, human, ignore_unavailable
See the rank-eval docs for more information.
delete_by_query()
$response = $e->delete_by_query( index => 'index' | \@indices, # optional type => 'type' | \@types, # optional, body => { delete-by-query } # required );
The delete_by_query() method deletes all documents which match the specified query.
Query string parameters: _source, _source_excludes, _source_includes, allow_no_indices, analyze_wildcard, analyzer, conflicts, default_operator, df, error_trace, expand_wildcards, from, human, ignore_unavailable, lenient, preference, q, refresh, request_cache, requests_per_second, routing, scroll, scroll_size, search_timeout, search_type, size, slices, sort, stats, terminate_after, version, timeout, wait_for_active_shards, wait_for_completion
conflicts
requests_per_second
scroll_size
search_timeout
slices
wait_for_completion
See the delete-by-query docs for more information.
delete_by_query_rethrottle()
$response = $e->delete_by_query_rethrottle( task_id => 'id' # required requests_per_second => num );
The delete_by_query_rethrottle() API is used to dynamically update the throtting of an existing delete-by-query request, identified by task_id.
task_id
Query string parameters: error_trace, filter_path, human, requests_per_second
See the delete-by-query-rethrottle docs for more information.
reindex()
$response = $e->reindex( body => { reindex } # required );
The reindex() API is used to index documents from one index or multiple indices to a new index.
Query string parameters: error_trace, human, refresh, requests_per_second, slices, timeout, wait_for_active_shards, wait_for_completion
See the reindex docs for more information.
reindex_rethrottle()
$response = $e->delete_by_query_rethrottle( task_id => 'id', # required requests_per_second => num );
The reindex_rethrottle() API is used to dynamically update the throtting of an existing reindex request, identified by task_id.
See the reindex-rethrottle docs for more information.
update_by_query()
$response = $e->update_by_query( index => 'index' | \@indices, # optional type => 'type' | \@types, # optional, body => { update-by-query } # optional );
The update_by_query() API is used to bulk update documents from one index or multiple indices using a script.
Query string parameters: _source, _source_excludes, _source_includes, allow_no_indices, analyze_wildcard, analyzer, conflicts, default_operator, df, error_trace, expand_wildcards, from, human, ignore_unavailable, lenient, pipeline, preference, q, refresh, request_cache, requests_per_second, routing, scroll, scroll_size, search_timeout, search_type, size, slices, sort, stats, terminate_after, timeout, version, version_type, wait_for_active_shards, wait_for_completion
See the update_by_query docs for more information.
update_by_query_rethrottle()
$response = $e->update_by_query_rethrottle( task_id => 'id' # required requests_per_second => num );
The update_by_query_rethrottle() API is used to dynamically update the throtting of an existing update-by-query request, identified by task_id.
See the update-by-query-rethrottle docs for more information.
Elasticsearch allows you to store scripts in the cluster state and reference them by id. The methods to manage indexed scripts are as follows:
put_script()
$result = $e->put_script( id => 'id', # required context => $context, # optional body => { script } # required );
The put_script() method is used to store a script in the cluster state. For instance:
$result = $e->put_scripts( id => 'hello_world', body => { script => { lang => 'painless', source => q(return "hello world") } } );
Query string parameters: error_trace, human
See the indexed scripts docs for more.
get_script()
$script = $e->get_script( id => 'id', # required );
Retrieve the indexed script from the cluster state.
Query string parameters: error_trace, human, master_timeout
master_timeout
delete_script()
$script = $e->delete_script( id => 'id', # required );
Delete the indexed script from the cluster state.
Query string parameters: error_trace, human, master_timeout, timeout
scripts_painless_execute()
$result = $e->scripts_painless_execute( body => {...} # required );
The Painless execute API allows an arbitrary script to be executed and a result to be returned.
Query string parameters: error_trace, filter_path, human
See the painless execution docs for more.
Enrico Zimuel <enrico.zimuel@elastic.co>
This software is Copyright (c) 2022 by Elasticsearch BV.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
To install Search::Elasticsearch::Client::7_0, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Search::Elasticsearch::Client::7_0
CPAN shell
perl -MCPAN -e shell install Search::Elasticsearch::Client::7_0
For more information on module installation, please visit the detailed CPAN module installation guide.