2016-06-16 81 views
10

Elasticsearch'ta yeniyim ve https://www.elastic.co/guide/en/elasticsearch/plugins/master/mapper-attachments.html adresinden, mapper-attachments eklentisinin elasticsearch 5.0.0'da kullanımdan kaldırıldığını okudum.Elasticsearch 5.0.0'da pdf dosyasını ingest eklenti eklentisiyle nasıl dizine ekleyebilirim?

Şimdi yeni ingest eklenti eklentisiyle bir pdf dosyasını indekslemeye ve eki yüklemeye çalışıyorum. Şimdiye kadar denedim ne

curl -H 'Content-Type: application/pdf' -XPOST localhost:9200/test/1 -d @/cygdrive/c/test/test.pdf 

ama aşağıdaki hatayı alıyorum:

{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse"}],"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":{"type":"not_x_content_exception","reason":"Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}},"status":400} 

ben pdf dosyası endeksli ve yüklenmiş olacağını beklenebilir. Neyi yanlış yapıyorum?

Ayrıca, Elasticsearch 2.3.3'ü test ettim ancak mapper ekleri eklentisi bu sürüm için geçerli değil ve daha eski bir Elasticsearch sürümünü kullanmak istemiyorum.

cevap

12

Sen ile yemek boru hattını oluşturduk emin olmak gerekir:

PUT _ingest/pipeline/attachment 
{ 
    "description" : "Extract attachment information", 
    "processors" : [ 
    { 
     "attachment" : { 
     "field" : "data", 
     "indexed_chars" : -1 
     } 
    } 
    ] 
} 

Sonra oluşturduğunuz boru hattı kullanmayan SONRASI endeksinize bir PUT yapabilirsiniz. PDF içeriği base64 şifreli gerektiğini hatırlamak

curl -H 'Content-Type: application/pdf' -XPUT localhost:9200/test/1?pipeline=attachment -d @/cygdrive/c/test/test.pdf 

: En örnekte

PUT my_index/my_type/my_id?pipeline=attachment 
{ 
    "data": "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0=" 
} 

, gibi bir şey olmalıdır.

Size yardımcı olacağını umuyorum.

düzenleme 1 bu mutlaka okuyun, bu bana çok yardımcı olunuz:

Elastic Ingest

Ingest Plugin

Ingest Presentation

Edit 2

Ayrıca, ek yükleme eklenti yüklü olmalıdır.Eğer alıp kullanma işlemcisini (ek) oluşturmadan önce

./bin/elasticsearch-plugin install ingest-attachment 

Düzenleme 3

, senin indeksi, kullanmak ve sahip sağlayacağız alanlarla harita oluşturun data alanınız harita (eki işlemcinizdeki "alan" ile aynı adrestir), böylece ingest işlenir ve dat'ınızı doldurur pdf içeriğinizle bir alanı.

Ben -1 değerle, alıp kullanma işlemcisinde indexed_chars seçeneği takılı, böylece endeks büyük pdf dosyalarını can.

Düzenleme 4

haritalama böyle bir şey olmalı:

PUT my_index 
{ 
    "mappings" : { 
     "my_type" : { 
      "properties" : { 
       "attachment.data" : { 
        "type": "text", 
        "analyzer" : "brazilian" 
       } 
      } 
     } 
    } 
} 

Bu durumda, ben Brezilya filtre kullanmak, ama o kaldırmak veya kendi kullanabilirsiniz.

+0

Veri alanı için neden bir eşlemeye ihtiyacınız var? Boru hattı, veri alanını toplayıp açık bir şekilde haritalandırılmadan işleme koymaz mı? Bu haritalama neye benziyordu? – bjlevine

+0

@bjlevine, aslında alanı eşleştirmenize gerek yok ... işlemci işlemcinin iç kısmını (işlemcinizin) yaratacaktır. Ancak bazen güncellenmiş cevap gibi bir filtreniz olması gerekir. umarım – Evis

+1

yardım eder Ingest Attachment eklentisi ile çok savaştım. Bu üretimde kullanılamaz. Ambar'ı (http://ambar.rdseventeen.com), birçok durumda üretimde olduğu gibi, üretimde kullanabileceğimizden emin olmak için, dokümanları – SochiX