class AliyunOpenSearch::Scan

Attributes

custom_params[R]
request_id[R]
result[R]
scroll_id[R]

Public Class Methods

new(index_names, options = {}) click to toggle source
Calls superclass method AliyunOpenSearch::Base::new
# File lib/aliyun_open_search/scan.rb, line 5
def initialize(index_names, options = {})
  super()

  @index_names = index_names.is_a?(Array) ? index_names.join(";") : index_names
  @scroll = options[:scroll] || "1m"

  @custom_params = {
    query: [
      options[:query] || "query=''",
      "config=hit:#{options[:hit] || 500},format:#{options[:format] || "json"}"
    ]
  }

  setup
end

Public Instance Methods

execute() click to toggle source
# File lib/aliyun_open_search/scan.rb, line 35
def execute
  params = Base.new.basic_params.merge(
    Base.format_params(
      custom_params.merge(
        "index_name" => @index_names,
        "scroll" => @scroll,
        "scroll_id" => @scroll_id
      )
    )
  )

  send_request(params)
end
setup() click to toggle source
# File lib/aliyun_open_search/scan.rb, line 21
def setup
  params = basic_params.merge(
    Base.format_params(
      custom_params.merge(
        "index_name" => @index_names,
        "scroll" => @scroll,
        "search_type" => "scan"
      )
    )
  )

  send_request(params)
end

Private Instance Methods

send_request(params) click to toggle source
# File lib/aliyun_open_search/scan.rb, line 51
def send_request(params)
  @result = Net::HTTP.get(uri(params.merge("Signature" => Search.signature(params))))
  # 为了保持与其他方法返回值一致

  result = JSON.parse(@result)

  @request_id = result["request_id"]
  @scroll_id = result["result"]["scroll_id"]

  self
end