본문 바로가기

나는개발자다

elasticsearch와 couchdb 연동

책 보고 처음 작업하는것이다. 내용이 불만족스럽지만 일단 정리먼저.. 


전체 구조를 보면


elasticsearch -> couchdb에 주기적으로 폴링한다.  elasticsearch index 생성은  couchdb에 있는 http://localhost:5982/dbname/_change의 내용을 가지고 만든다.



1. elasticsearch, couchdb 설치.. <-- 다른데 많이 있으니 pass


2. plugin 설치

elasticsearch에서 제공해주는 river를 이용한다.

홈페이지 : https://github.com/elasticsearch/elasticsearch-river-couchdb

설치방법 elasticsearch/bin/plugin -install elasticsearch/elasticsearch-river-couchdb/2.4.0


3. couchdb에 db 생성

curl -XPUT http://localhost:5984/my_couch_db


4. river문서 생성  

curl -XPUT "http://localhost:9200/_river/kangcom_idx/_meta" -d "{

"type" : "couchdb",

"couchdb" : {

"host" : "192.168.0.29",

"port" : 5984,

"db" : "my_kangcom",

"last_seq": "20000000",

"filter" : null}

}" 


위 문서에서 참고할 것은 last_seq이다. 

couchdb의 _change를 참고할 때 last_seq 하나만 가지고 elasticsearch에서 index를 생성한다.

이 때 문제점은 기존에 있는 database의 내용은 index가 생성이 되지 않는다.

즉 위 문서를(river) 생성한 시점 이후부터 couchdb에 변경된 내용만 index가 된다.


이러게 하면 기본적으로 couchdb와 elasticsearch가 연동이 된다.

db이름이 elasticsearch의 indexing 이름이 된다.


5. mapping 확인

couchdb에 생성한 DB(my_couch_db)에 데이터를 입력한 후 mapping를 확인해본다.

river plugin에서 기본값은 dynamic이다. 즉 자동으로 생성이 된다.

이 값을 바꿀 수 있는데. 일단 패스.

명령어 : curl localhost:9200/my_couch_db/_mapping?pretty


6.search 하기.

명령어 : curl localhost:9200/my_couch_db/_search?q="_rev":"3-fe5796105bf143"



7. 기타 명령어

curl -XDELETE http://localhost:9200/my_couch_db/my_couch_db/_mapping


8. plugin 

gui : plugin --install jettro/elasticsearch-gui

HQ  : plugin -install royrusso/elasticsearch-HQ

HEAD: plugin -install mobz/elasticsearch-head




참고할 사항

CURL 을 윈도우에서 사용할 경우.

curl -XPUT "localhost:9200/_river/my_couv/_meta" -d "{ \"type\" : \"couchdb\",  ~~}"

위처첨 한 줄로 만들고 실행해야 한다.

그리고 "{~~~\"~~}"  "를 \"로 변경해줘야 한다. {} 밖의 " 는 그냥 둔다.


ex)

curl -XPUT "localhost:9200/_river/my_couchdb_riv/_meta" -d "{

    \"type\" : \"couchdb\",

    \"couchdb\" : {

        \"host\" : \"192.168.0.29\",

        \"port\" : 5984,

        \"db\" : \"my_kangcom\",

        \"filter\" : null

}"