Method: Elasticsearch::API::Synonyms::Actions#put_synonym_rule

Defined in:
lib/elasticsearch/api/actions/synonyms/put_synonym_rule.rb

#put_synonym_rule(arguments = {}) ⇒ Object

Create or update a synonym rule. Create or update a synonym rule in a synonym set. If any of the synonym rules included is invalid, the API returns an error. When you update a synonym rule, all analyzers using the synonyms set will be reloaded automatically to reflect the new rule.

Parameters:

  • arguments (Hash) (defaults to: {})

    a customizable set of options

Options Hash (arguments):

  • :set_id (String)

    The ID of the synonym set. (Required)

  • :rule_id (String)

    The ID of the synonym rule to be updated or created. (Required)

  • :refresh (Boolean)

    If true, the request will refresh the analyzers with the new synonym rule and wait for the new synonyms to be available before returning. If false, analyzers will not be reloaded with the new synonym rule Server default: true.

  • :error_trace (Boolean)

    When set to true Elasticsearch will include the full stack trace of errors when they occur.

  • :filter_path (String, Array<String>)

    Comma-separated list of filters in dot notation which reduce the response returned by Elasticsearch.

  • :human (Boolean)

    When set to true will return statistics in a format suitable for humans. For example ‘“exists_time”: “1h”` for humans and `“exists_time_in_millis”: 3600000` for computers. When disabled the human readable values will be omitted. This makes sense for responses being consumed only by machines.

  • :pretty (Boolean)

    If set to true the returned JSON will be “pretty-formatted”. Only use this option for debugging only.

  • :headers (Hash)

    Custom HTTP headers

  • :body (Hash)

    request body

Raises:

  • (ArgumentError)

See Also:



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
78
# File 'lib/elasticsearch/api/actions/synonyms/put_synonym_rule.rb', line 50

def put_synonym_rule(arguments = {})
  request_opts = { endpoint: arguments[:endpoint] || 'synonyms.put_synonym_rule' }

  defined_params = [:set_id, :rule_id].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]
  raise ArgumentError, "Required argument 'set_id' missing" unless arguments[:set_id]
  raise ArgumentError, "Required argument 'rule_id' missing" unless arguments[:rule_id]

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

  body = arguments.delete(:body)

  _set_id = arguments.delete(:set_id)

  _rule_id = arguments.delete(:rule_id)

  method = Elasticsearch::API::HTTP_PUT
  path   = "_synonyms/#{Utils.listify(_set_id)}/#{Utils.listify(_rule_id)}"
  params = Utils.process_params(arguments)

  Elasticsearch::API::Response.new(
    perform_request(method, path, params, body, headers, request_opts)
  )
end