我是Elasticsearch的新手。我已经使用Kibana,X-pack和摄取附件成功安装了Elasticsearch。我有Elasticsearch和Kibana都在运行。我使用Windows 2012服务器上的默认选项安装时保持简单。我在另一个驱动器w\mydocs
上有一个目录,目前它只有3个纯文本文件,但我想添加其他像pdf和doc文件类型。所以现在我想把这些文件放到Elasticsearches索引中。我尝试使用以下链接作为指南Attaching pdf docs in Elasticsearch,但我无法让它发挥作用。
以下是我设置索引和管道的方法:
PUT _ingest/pipeline/docs
{
"description": "documents",
"processors" : [
{
"attachment" : {
"field": "data",
"indexed_chars" : -1
}
}]
}
PUT myindex
{
"mappings" : {
"documents" : {
"properties" : {
"attachment.data" : {
"type": "text",
"analyzer": "standard"
}
}
}
}
}
然后在我使用以下内容获取第一个文档:
PUT localhost:9200/documents/1?pipeline=docs -d @/w/mydocs/README.TXT
我收到的错误是:
{
"error": {
"root_cause": [
{
"type": "parse_exception",
"reason": "request body is required"
}
],
"type": "parse_exception",
"reason": "request body is required"
},
"status": 400
}
答案 0 :(得分:1)
即使在索引二进制数据时,您仍然必须向Elasticsearch发送有效的JSON。这意味着,您必须将文档编码为base64,然后将其放入像这样的JSON文档
{
"data" : "base64encodedcontentofyourfile"
}
答案 1 :(得分:0)
我被建议不要使用摄取附件,而是使用FsCrawler。我设法使Fscrawler无需将任何内容转换为base64。