Module: Elasticsearch::API::Monitoring::Actions

Included in:
MonitoringClient
Defined in:
lib/elasticsearch/api/namespace/monitoring.rb,
lib/elasticsearch/api/actions/monitoring/bulk.rb

Instance Method Summary collapse

Instance Method Details

#bulk(arguments = {}) ⇒ Object

Used by the monitoring features to send monitoring data.

or the conveniency “combined” format can be passed, refer to Elasticsearch::API::Utils.__bulkify documentation.

*Deprecation notice*: Specifying types in urls has been deprecated Deprecated since version 7.0.0

Options Hash (arguments):

  • :type (String)

    Default document type for items which don’t provide one Deprecated

  • :system_id (String)

    Identifier of the monitored system

  • :system_api_version (String)

    API Version of the monitored system

  • :interval (String)

    Collection interval (e.g., ‘10s’ or ‘10000ms’) of the payload

  • :headers (Hash)

    Custom HTTP headers

  • :body (String|Array)

    The operation definition and data (action-data pairs), separated by newlines. Array of Strings, Header/Data pairs,

Raises:

See Also:

Parameters:

  • (defaults to: {})

    a customizable set of options



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/elasticsearch/api/actions/monitoring/bulk.rb', line 42

def bulk(arguments = {})
  request_opts = { endpoint: arguments[:endpoint] || 'monitoring.bulk' }

  defined_params = [:type].each_with_object({}) do |variable, set_variables|
    set_variables[variable] = arguments[variable] if arguments.key?(variable)
  end
  request_opts[:defined_params] = defined_params unless defined_params.empty?

  raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]

  arguments = arguments.clone
  headers = arguments.delete(:headers) || {}

  body = arguments.delete(:body)

  _type = arguments.delete(:type)

  method = Elasticsearch::API::HTTP_POST
  path   = if _type
             "_monitoring/#{Utils.__listify(_type)}/bulk"
           else
             '_monitoring/bulk'
           end
  params = Utils.process_params(arguments)

  payload = if body.is_a? Array
              Elasticsearch::API::Utils.__bulkify(body)
            else
              body
            end

  headers.merge!('Content-Type' => 'application/x-ndjson')
  Elasticsearch::API::Response.new(
    perform_request(method, path, params, payload, headers, request_opts)
  )
end