弹性映射器附件不从Office文档中提取文本

时间:2016-03-07 17:03:36

标签: python-3.x elasticsearch-plugin

我最近尝试为Elastic Search测试mapper-attachments插件。
以下是我在Elastic中的基本映射:

PUT /test
PUT /test/docs/_mapping
{
  "docs": {
    "properties": {
      "file": {
        "type": "attachment",
        "fields": {
          "content": {
            "term_vector":"with_positions_offsets",
            "store": true
          }
        }
      }
    }
  }
}

我正在使用Python的Elasticsearch Client,以下示例假设:

import base64
from elasticsearch import Elasticsearch
es = Elasticsearch()

当我自己编码一个字符串时,没关系:

encoded = base64.b64encode(b'Encoding Test')
es.index(index='test',
         doc_type='docs',
         id=1,
         refresh='true',
         body={
            'file' : {
                "_content": encoded,
                "_indexed_chars" : -1
             }
})

我也尝试索引pdf文件,也可以正常工作 但是,当我尝试使用Microsoft Office Document(OpenXML)时,如pptx或docx,文件的内容似乎没有被编入索引:

file_path = "docx/test.docx"
with open(file_path, "rb") as docx_file:
    es.index(index='test', doc_type='docs', id=2, refresh='true', body={
        'file' : {
            "_content": base64.b64encode(docx_file.read()),
            "_indexed_chars" : -1
         }
    })

我尝试了很多Word和Powerpoint文件,没有成功。 当我通过解压缩文件手动提取文本时,从XML中提取文本并使用base64重新编码此文本它是否正常工作,但是使用map-attachments插件(Apache Tika)执行此操作的重点是什么?对我来说似乎很奇怪。

你有什么发生的线索吗?我错过了一步吗?

Python:3.4
弹性搜索:2.2.0
插件:映射器附件
在我的笔记本电脑上(Mac OS X v 10.11.3)

0 个答案:

没有答案