2012-06-28 4 views
2

탄성 검색에서 타이어 보석을 사용하여 첨부 파일 유형을 색인화하는 데 어려움이 있습니다. 첨부 파일 type을 올바르게 설정할 수 없습니다.Tire로 Elasticsearch의 첨부 파일을 어떻게 색인합니까?

타이어 젬에서 참조한 ActiveModel Integration example을 가져다가 필드를 레코드와 색인을 생성하려는 로컬 파일 시스템의 참조 이름에 추가했습니다. -

#app/models/article.rb 
class Article < ActiveRecord::Base 
    include Tire::Model::Search 
    include Tire::Model::Callbacks 

    attr_accessible :title, :content, :published_on, :filename 

    mapping do 
    indexes :id, :type =>'integer' 
    indexes :title 
    indexes :content 
    indexes :published_on, :type => 'date' 
    indexes :attachment, :type => 'attachment' 
    end 

    def to_indexed_json 
    to_json(:methods => [:attachment]) 
    end 

    def attachment 
    if filename.present? 
     path_to_pdf = "/Volumes/Disk41402/test_proj/sample_pdfs/#{filename}.pdf" 
     Base64.encode64(open(path_to_pdf) { |pdf| pdf.read }) 
    end 
    end 
end 

FWIW PDF 파일이 색인에 추가 된 것으로 나타납니다이 "type" : "attachment"

$ curl -XGET 'http://localhost:9200/articles/_mapping?pretty=true' 
{ 
    "articles" : { 
    "article" : { 
     "properties" : { 
     "attachment" : { 
      "type" : "string" 
     }, 
     "content" : { 
      "type" : "string" 
     }, 
     "created_at" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
     }, 
     "filename" : { 
      "type" : "string" 
     }, 
     "id" : { 
      "type" : "long" 
     }, 
     "published_on" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
     }, 
     "title" : { 
      "type" : "string" 
     }, 
     "updated_at" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
     } 
     } 
    } 
    } 
} 

내가 해봤해야 할 때

$ curl -XGET 'http://localhost:9200/articles/_all/2?pretty=true' 
{ 
    "_index" : "articles", 
    "_type" : "article", 
    "_id" : "2", 
    "_version" : 1, 
    "exists" : true, "_source" : {"content":"Consectetur adipisicing elit, sed do eiusmod tempor incididunt. working?","created_at":"2012-06-21T17:19:03Z","filename":"sample2","id":2,"published_on":"2012-06-20","title":"Two","updated_at":"2012-06-28T00:00:59Z","attachment":"JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAg\nUiAvRmlsdG... ... ...4+CnN0YXJ0eHJlZgo4\nNTAzCiUVPRgo=\n" 
} 
} 

그러나 첨부 파일 유형은 여전히 ​​"type" : "string"입니다 rake environment tire:import CLASS=Article FORCE=true 인덱스를 다시 작성하지만 유형은 문자열로 유지됩니다. 아무도 내가 어 지르는 곳을 보지 않니?

로그인 ('어떤 핸들러가'!? 의미 정확히 확인되지 않음) : 당신이 mapper attachment 플러그인

[2012-06-28 17:30:58,711][INFO ][cluster.metadata   ] [Kofi Whitemane] [articles] deleting index 
[2012-06-28 17:30:58,765][WARN ][cluster.metadata   ] [Kofi Whitemane] [articles] failed to create 
org.elasticsearch.index.mapper.MapperParsingException: mapping [article] 
    at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$1.execute(MetaDataCreateIndexService.java:263) 
    at org.elasticsearch.cluster.service.InternalClusterService$2.run(InternalClusterService.java:211) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: org.elasticsearch.index.mapper.MapperParsingException: No handler for type [attachment] declared on field [attachment] 
    at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:259) 
    at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parse(ObjectMapper.java:217) 
    at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:161) 
    at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:271) 
    at org.elasticsearch.index.mapper.MapperService.add(MapperService.java:174) 
    at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$1.execute(MetaDataCreateIndexService.java:260) 
    ... 4 more 
[2012-06-28 17:30:58,805][INFO ][cluster.metadata   ] [Kofi Whitemane] [articles] creating index, cause [auto(bulk api)], shards [5]/[1], mappings [] 
[2012-06-28 17:30:58,891][INFO ][cluster.metadata   ] [Kofi Whitemane] [articles] update_mapping [article] (dynamic) 

답변

3

설치되어 있습니까?

the tutorial at elasticsearch.org을 참조하십시오.

+0

예! 그거였다! 나는 그것을 설치했지만 0.19.6으로 업데이트 할 때 플러그인 폴더가 타기 위해 오지 않았다. 바보 나! – Meltemi

관련 문제