[035] 使用Ruby Elasticsearch 7.14进行的文档按AND进行的筛选搜索(“015”)的全量展示

简而言之

使用Ruby的Elasticsearch客户端在Elasticsearch 7.14上操作REST API。
另外,为了比较,也会记录在Kibana DevTool中的查询语句。

现在从索引”shakespeare”中进行”文档搜索”。
提取包含字段”文本条目”的值为”ACT”和”V”的”单词”的文档。

在这种情况下,使用scroll_id来检索所有记录。

验证环境

使用了Elasticsearch + Kibana (7.14)来注册了验证数据“Shakespeare”。

[00] 使用 Ruby 的 Elasticsearch 客户端程序包尝试操作 Elasticsearch 7.14 … 构建验证环境

参考信息

请用中文翻译以下内容,只需提供一个选项:

实践- 执行实际行动或应用知识或技能

如果是Kibana DevTool的情况下

请参考以下内容:
·[015] 使用Ruby elasticsearch 7.14中的AND进行文档筛选搜索。

对于Ruby来说

代码 (daima)

重要的部分是「如果 __FILE__ == $0之后」。

MySimpleClient类可以完全复制(但是,请适当地替换为192.168.10.115)。

#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-
require 'multi_json'
require 'faraday'
require 'elasticsearch/api'
require 'active_support/core_ext'
require 'active_support'

class MySimpleClient
# note_0001
  include Elasticsearch::API
  CONNECTION = ::Faraday::Connection.new url: 'http://10.208.207.53:29200'
  def perform_request(method, path, params, body, headers = nil)
    CONNECTION.run_request \
      method.downcase.to_sym,
      path_with_params(path, params),
      (body ? MultiJson.dump(body): nil),
      {'Content-Type' => 'application/json'}
  end

  private

  def path_with_params(path, params)
    return path if params.blank?

    case params
    when String
      "#{path}?#{params}"
    when Hash
      "#{path}?#{params.to_query}"
    else
      raise ArgumentError, "Cannot parse params: '#{params}'"
    end
  end
end

if __FILE__ == $0

  client = MySimpleClient.new

  q = {
    "query": {
      "query_string": {
        "query": "text_entry:ACT AND text_entry:V"
      }
    }
  }
  res = client.search index: 'shakespeare', scroll: '10m', body: q
  h = JSON.parse(res)
  pp h
  while h['hits']['hits'].size.positive?
    q = {
      "scroll_id": h['_scroll_id']
    }
    res = client.scroll scroll: '5m', body: q
    h = JSON.parse(res)
    pp h
  end
end
广告
将在 10 秒后关闭
bannerAds