我将Elasticsearch用作Ruby /
Sinatra应用程序的数据存储,并且想保存图像。有没有办法将图像作为二进制文件索引到ES中?如果是这样,我应该怎么做,然后将二进制文件转换回图像,以便在站点上显示它?
Elasticsearch可以使用二进制类型存储二进制数据。二进制类型需要使用base64编码,并且默认情况下不会被索引。这是一个ES映射示例
POST http://localhost:9200/adimages/
{
"mappings" : {
"images" : {
"properties" : {
"image" : { "type" : "binary"},
"id" : {"type" : "string"}
}
}
}
一些sinatra / ruby代码
get '/pictures/:name' do |name|
@image = @es_client.search index: 'adsimages', body: { query: { match: { id: name } } }
@image = AdHelpers.get_hashie_list(@image)
content_type 'image/png' #hardcoded content type for now
fileContent = Base64.decode64(@image[0].image);
end
post '/sell/pictures' do
#adsimagesindex/images
image_id = SecureRandom.hex
file = params[:file][:tempfile] #get the post from body
fileContent = file.read
fileContent = Base64.encode64(fileContent)
@es_client.index index: 'adsimages', type: 'images', id: image_id, body: {id: image_id, image: fileContent}
redirect '/ads/sell/pictures'
end
然后,您使用表格提交图像
<form class="form-horizontal" action="/ads/sell/pictures" method="post">
<div class="container">
<div class="form-group">
<label for="upload-pictures">Upload Pictures</label>
<input type="file" id="file" name="upload-pictures[]" multiple>
</div>
<button type="submit" class="btn btn-default">Next</button>
</div>
</form>
检索图像,请执行’GET / ads / sell / pictures / 7a911a0355ad1cc3cfc78bbf6038699b’
如果要与文档一起存储图像(取决于用例),可以在搜索时通过指定要返回的字段来省略图像字段。或者,您可以仅将图像ID与文档一起存储,并仅为图像创建索引。
希望这可以帮助!
目前,我正在使用Scala开发一个具有Play2框架的后端服务器。我有以下问题: 我使用文件处理程序GridFS在MongoDB中保存像图像这样的文档。GridFs创建两个文件: fs.files(包含元数据)和fs.chunks(存储块) 但我想把图像保存在我自己的收藏中。所有图像都应该有一个数据库条目,如用户名和注释。我有两个解决问题的办法,但我需要帮助。 使用我自己的收藏: 如何使用Grid
问题内容: 这是新的Android Q 范围存储的链接。 根据此Android开发者最佳实践博客,(这是我的情况)应使用MediaStore API完成。 深入研究文档,我找不到相关功能。 这是我在科特林的审判: 结果是,按照最佳做法博客中的描述,我的图像保存在此处为 我的问题是: 如何使用MediaStore API保存图像? 用Java回答同样可以接受。 提前致谢! 编辑 感谢PerracoL
Logstash 早期有三个不同的 elasticsearch 插件。到 1.4.0 版本的时候,开发者彻底重写了 LogStash::Outputs::Elasticsearch 插件。从此,我们只需要用这一个插件,就能任意切换使用 Elasticsearch 集群支持的各种不同协议了。 配置示例 output { elasticsearch { host => "192
我在我的数据框中有一个字段,其中包含我转向JSON数组字符串的聚合值列表。当我试图将我的数据帧保存到ElasticSearch时,我得到这个错误: 组织。弹性搜索。hadoop。RestEsHadoopRemoteException:mapper_parsing_exception:[userSegments]的对象映射试图将字段[userSegments]解析为对象,但找到了一个具体值 下面是我
在我的java项目中,我将图形与这个库“图形流”一起使用。 我需要将我的图形保存在一个类型文件“Graphviz Dot”中,即:节点、边、节点属性、边属性。我通常用这种方式把我的图形保存在文件中: 问题:当我打开或加载文件时,我看不到边缘属性。有人知道“图形流”并且知道我可以保存这个文件吗? 感谢您的帮助。
问题内容: 我正在使用Selenium和Google Chrome驱动程序以编程方式打开页面。在每个页面上都有一个动态生成的图像,我想下载该图像。目前,我正在等待页面完成加载,然后获取图像URL并使用System.Net.WebClient下载。 除我要下载图像两次(在浏览器中一次,使用WebClient一次)外,一切正常。问题在于每个图像大约有15MB,并且两次下载很快就累加了。 那么-是否可以