2017-04-03 65 views
2

我有一个在elasticsearch中创建的管道,它用一组pdf来获取文档。我想修改内容字段以便连接其他字段以便进行搜索。修改已获取pdf的内容

我的管道:

client.ingest.putPipeline({ 
    id: 'my-pipeline-id', 
    body: { 
    "description" : "Extract attachment information", 
    "processors" : 
    [ 
     { 
     "foreach": { 
      "field": "attachments", 
      "processor": { 
      "attachment": { 
       "target_field": "_ingest._value.attachment", 
       "field": "_ingest._value.data" 
      } 
      } 
     } 
     } 
    ] 
    } 
}, callback); 

我不能添加一组处理器的foreach后,因为我需要访问,以便把该文档的值,在结束每一个PDF格式的内容内容。

一些示例文件是:

let doc = { 
    matricula: '6789AAA', 
    bastidor: 'BASTIDOR789', 
    expediente: '79', 
    attachments: 
    [ 
     { 
      filename: "informe", 
      data: /* chunk of data in base64 */ 
     }, 
     { 
      filename: "ivtm_diba", 
      data: /* another chunk of data in base64 */ 
     } 
    ] 
}; 

结果文件看起来就像这样:

{ 
    "_index": "doc", 
    "_type": "document", 
    "_id": "AVsy85rwMuPe74hQBT8L", 
    "_score": 1.2039728, 
    "_source": { 
     "attachments": [ 
     { 
      "filename": "informe", 
      "attachment": { 
      "Very very long content", 
      "date": "2016-06-08T14:01:25Z", 
      "content_type": "application/pdf", 
      "language": "es", 
      "content_length": 3124 
      } 
     }, 
     { 
      "filename": "ivtm_diba", 
      "attachment": { 
      "content": "Very long content here", 
      "content_type": "application/pdf", 
      "language": "ca", 
      "content_length": 5657 
      } 
     } 
     ], 
     "expediente": "79", 
     "matricula": "6789ZXC", 
     "bastidor": "BASTIDOR789" 
    } 
    } 

我要添加到内容领域的“bastidor”,“matricula”的价值和“expediente”领域。

我使用的是elasticsearch-js,但这不是必需的。

+1

嗨,你可能知道它,但以防万一,是不是所有的领域足够你需要什么?它已经在那里,你也可以定制它。 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html。如果_all不够,那么你可以创建一个额外的域与其他域的连接,基本上你需要的是在映射中定义它并使用脚本。但我有一种感觉,_all字段可能足以满足您的需求(只是搜索)。 –

+0

说真的,我不知道为什么我没有考虑_all,但是是的,这是我的问题的正确解决方案。谢谢! 请提交您的评论作为一个真正的答案,以接受它。 – Kangcor

+1

好吧,只是作为答案发布。干杯! –

回答