2012-10-29 4 views
0

나는 Mongo Db의 gridFS에 pdf 파일을 저장하고 탄성 검색을 사용하여 해당 pdf를 검색하려고했습니다.MongoDB를 사용한 탄성 검색 : PDF 검색

1) 몽고 DB 사이드 :

mongod --port 27017 --replSet rs0 --dbpath "D:\Mongo-DB\mongodb-win32-i386-2.0.7\data17" 
mongod --port 27018 --replSet rs0 --dbpath "D:\Mongo-DB\mongodb-win32-i386-2.0.7\data18" 
mongod --port 27019 --replSet rs0 --dbpath "D:\Mongo-DB\mongodb-win32-i386-2.0.7\data19" 

mongo localhost:27017 
rs.initiate() 
rs.add("hostname:27018") 
rs.add("hostname:27019") 

mongofiles -hlocalhost:27017 --db testmongo --collection files --type application/pdf put D:\Sherlock-Holmes.pdf 

2) 탄성 검색 사이드 (설치된 플러그인 : 나는 다음을 수행 bigdesk/헤드/매퍼 - 첨부 파일/강 - MongoDB를)

을 -> 탄력 사용

: 검색 헤드 내가 다음 URL에 액세스하려고 지금

URL : http://localhost:9200/_river/mongodb/ 
_meta/PUT 

{ 
    "type": "mongodb", 
    "mongodb": { 
    "db": "testmongo", 
    "collection": "fs.files", 
    "gridfs": true, 
    "contentType": "", 
    "content": "base64 /path/filename | perl -pe 's/\n/\\n/g'" 
    }, 
    "index": { 
    "name": "testmongo", 
    "type": "files", 
    "content_type": "application/pdf" 
    } 
} 

"모든 요청"탭에서 다음과 같은 요청을 부여 내가 다음 URL을 사용하여이 PDF를 검색하려고했을 때

{ 
    "_index" : "testmongo", 
    "_type" : "files", 
    "_id" : "508e82e21e43def09b5e1602", 
    "_version" : 1, 
    "exists" : true, "_source" : {"_id":"508e82e21e43def09b5e1602","filename":"D:\\Sherlock-Holmes.pdf","chunkSize":262144,"uploadDate":"2012-10-29T13:21:38.969Z","md5":"025fa2046f9254d2aecb9e52ae851065","length":98272,"contentType":"application/pdf"} 
} 

:하지만

http://localhost:9200/testmongo/files/508e82e21e43def09b5e1602?pretty=true 

나는 (내가 예상대로 믿는) 응답을 다음있어

http://localhost:9200/testmongo/files/_search?q=Albers&pretty=true 

를 그 다음 날 제공 결과 :

{ 
    "took" : 0, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 0, 
    "max_score" : null, 
    "hits" : [ ] 
    } 
} 

여기 내게 어떤 히트가 아니라 단어 "Albers"가 t에 있음을 보여줍니다. 그의 pdf. 도와주세요. 미리 감사드립니다.

답변

0

난 당신이

http://localhost:9200/testmongo/files/_search?q=<PROPERTYNAME>:Albers&pretty=true 

또는 복잡한 검색

에 대한

을 검색 할 속성을 지정해야합니다 생각
$ curl -XPOST 'http://localhost:9200testmongo/files/_search?q' -d '{ 
    <PROPERTYNAME> : "value", 
    <PROPERTYNAME> : { 
          <PROPERTYNAME> : "value", 
          <PROPERTYNAME> : "value" 
        } 
} 
' 

하지만 지금까지 나는 단지 인덱싱 후 사용자 정의 속성을 검색 할 수 있습니다 알고 귀하의 데이터.

+0

다른 파일의 텍스트를 가져 오기 위해 ES가 내부적으로 Apache TIKA를 사용하기 때문에 다른 첨부 파일 유형 텍스트 [pdf/doc 등]를 검색 할 때 ES를 사용할 수있는 문서를 읽었습니다. 귀하의 솔루션에서 우리는 어떻게 서로 다른 파일의 실제 텍스트로부터 속성을 만들 것입니까? – user1660340

+0

나는 신축성있는 검색에만 약간의 노력을했지만 탄력적 인 검색 첨부물을 이해함에 따라 첨부물의 메타 데이터 만 인덱싱합니다. 그래서이 메타 데이터는'date','title','author','keywords'와 같은 검색을 위해 사용할 수 있어야합니다. 이 데이터는'my_attachment.author'와 같은 종류의 속성으로 액세스 할 수 있어야합니다 – sailingthoms