[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