728x90
반응형

oplog 를 가져오기 위해서 어드민 권한이 있는 계정을 사용하거나

oplog read 권한과 db any access 권한을 준 계정이 필요..

 

엘라스틱 내용 정리

 

- tw-hsd monstache tomi  sample

gzip = true  //전송 압축
 
stats =true
 
mongo-url = "mongodb://계정:PW@tw-test.bi-0.naver:30001/admin"   // 연결 정보
 
elasticsearch-urls= ["http://localhost:9200"]    //엘라스틱 서치 서버 정보
 
elasticsearch-max-conns = 4    // 최대 접속
 
elasticsearch-max-seconds = 5   // 접속 타임아웃
 
elasticsearch-max-bytes = 800000   // 1회 전송 최대 용량
 
dropped-collections = false   // 컬렉션 드랍에 대한 적용 여부
 
dropped-databases = false   // database 드랍 적용 여부
 
replay = false
 
resume = false   // 재 시작
 
resume-write-unsafe = true
 
resume-name = "default"
 
index-as-update = true
 
index-oplog-time = true
 
direct-read-namespaces = ["TW_USER.MY_BBS_POST_M"]    // 시작시 전체 데이터를 읽어야 하는 컬렉션 (지정되지 않으면 데몬 실행시 부터의 oplog를 읽어옴)
change-stream-namespaces = ["TW_USER.MY_BBS_POST_M"]  // 변경 스트림에 대해서 추적할 컬렉션
 
index-files = false
 
file-highlighting = false
 
verbose = false
 
namespace-regex = '^TW_USER.MY_BBS_POST_M'    // 적용할 컬렉션 정규식

 

elasticsearch index json sample  

##curl -H "Content-Type: application/json" -XPUT "http://$HOST:9200/tw_user.my_bbs_post_m" -d @"tw_my_post_m.json"
##위와 같은 명령을 통해 맵핑할 인덱스와 형태소 분석기등을 등록해 사용...
## 인덱스를 삭제하거나 변경 시에는 재 생성 처리가 필요,
 
 
{
    "settings": {
        "analysis": {
            "analyzer": {    //형태소 분석기 등록
                "tw_hsd_smartcn": {
                    "type": "custom",
                    "tokenizer": "tw_hsd_smartcn_tokenizer",
                    "filter": [   // 각 형태소 분석기에 따른 필터 처리
                        "porter_stem",
                        "tw_hsd_stop"
 
                    ]
                }
            },
            "tokenizer": {
                "tw_hsd_smartcn_tokenizer": {
                    "type": "smartcn_tokenizer",
                    "mode": "search",
                    "user_dictionary_rules":[
                        "커스텀 단어 "
                    ],
                    "discard_punctuation": true  //구두점 제거
                }
            },
            "filter": {
                "tw_hsd_stop": {
                    "type": "stop",
                    "stopwords": [
 
                        "的"
                    ]
                }
            }
        }
    },
    "mappings": {      //인덱싱 맵핑 데이터
            "properties": {
                "bbsId": {
                    "type": "long"
                },
                "commentCount": {
                    "type": "long"
                },
                "contents": {
                    "properties": {
                        "imageUrl": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "invite": {
                            "properties": {
                                "charaType": {
                                    "type": "long"
                                },
                                "et": {
                                    "type": "long"
                                },
                                "hostMid": {
                                    "type": "long"
                                },
                                "partySeq": {
                                    "type": "long"
                                },
                                "st": {
                                    "type": "long"
                                }
                            }
                        },
                        "txt": {
                            "type": "text",
                           "analyzer": "tw_hsd_smartcn",
                           "fielddata": "true"
 
                        }
                    }
                },
                "ct": {
                    "type": "long"
                },
                "df": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "likeCount": {
                    "type": "long"
                },
                "mid": {
                    "type": "long"
                },
                "oplog_date": {
                    "type": "date",
                    "format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
                },
                "oplog_ts": {
                    "properties": {
                        "I": {
                            "type": "long"
                        },
                        "T": {
                            "type": "long"
                        }
                    }
                },
                "seq": {
                    "type": "long"
                },
                "ut": {
                    "type": "date",
                    "format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
                }
            }
        }
    }

쿼리 샘플 이미지.

  • 매핑 확인 쿼리

 

  • 일반적인 쿼리

{
"size" : 10,    //검색 후  결과 출력 갯수
"from" : 0,   // 페이징을 위한 검색된 것 중 시작 위치
"_source" : ["bbsId", "contents.txt"],   // 검색 한 결과에 대한 출력 필터
"query" : {        // 검색
    "match" : {   
        "contents.txt" : "手手"          
        }
},
"sort" : {    //결과에 대한 정렬
     "commentCount" : {
       "order" : "desc"
       }
   }
}
{
    "took": 85,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3703,
            "relation": "eq"
        },
        "max_score": 13.312824,
        "hits": [
            {
                "_index": "tw_user.my_bbs_post_m",
                "_type": "_doc",
                "_id": "5f2e1e7eb6f0665b11ebb7fb",
                "_score": 13.312824,
                "_source": {
                    "bbsId": 0,
                    "commentCount": 0,
                    "contents": {
                        "imageUrl": "https://party.naver.com/bbs/zh_Hant/photo_38b17763ba1893c04667d68a4699152f-1596857981236.png",
                        "invite": {
                            "charaType": 0,
                            "et": 0,
                            "hostMid": 50013008,
                            "partySeq": 178549,
                            "st": 0
                        },
                        "txt": "搓手手"
                    },
                    "ct": 1596857982325,
                    "df": "N",
                    "likeCount": 2,
                    "mid": 50013008,
                    "oplog_date": "2021/01/26 07:15:06",
                    "oplog_ts": {
                        "T": 1611645306,
                        "I": 0
                    },
                    "seq": 76440,
                    "ut": 1597047193959
                }
            },
            {
                "_index": "tw_user.my_bbs_post_m",
                "_type": "_doc",
                "_id": "5fe8a850bbaaf7115b779762",
                "_score": 13.076448,
                "_source": {
                    "bbsId": 0,
                    "commentCount": 0,
                    "contents": {
                        "invite": {
                            "charaType": 0,
                            "et": 0,
                            "hostMid": 0,
                            "partySeq": 0,
                            "st": 0
                        },
                        "txt": "手手忍不到結果花了1050給7天池\n再抽手手要沒了(啊不是"
                    },
                    "ct": 1609082960467,
                    "df": "Y",
                    "likeCount": 0,
                    "mid": 50470654,
                    "oplog_date": "2021/01/26 07:15:15",
                    "oplog_ts": {
                        "T": 1611645315,
                        "I": 0
                    },
                    "seq": 963484,
                    "ut": 1609085952553
                }
            },
        ]
    }
}

 

맵핑 예제

#!/bin/sh
 
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/party_user.my_bbs_post_m" -d @"my_post_m.json"
 
 
{
    "settings": {
        "analysis": {
            "analyzer": {
                "hsd_kuromoji": {
                    "type": "custom",
                    "tokenizer": "hsd_kuromoji_tokenizer",
                    "filter": [
                        "kuromoji_part_of_speech",
                        "kuromoji_baseform",
                        "ja_stop",
                        "kuromoji_number",
                        "kuromoji_stemmer",
                        "p2_stop"
                    ]
                }
            },
            "tokenizer": {
                "hsd_kuromoji_tokenizer": {
                    "type": "kuromoji_tokenizer",
                    "mode": "search",
                    "user_dictionary_rules":[
                        "東京スカイツリー,東京 スカイツリー,トウキョウ スカイツリー,カスタム名詞"
                    ],
                    "discard_punctuation": true
                }
            },
            "filter": {
                "p2_stop": {
                    "type": "stop",
                    "stopwords": [
                        "ん"
                    ]
                }
            }
        }
    },
    "mappings": {
            "properties": {
                "bbsId": {
                    "type": "long"
                },
                "commentCount": {
                    "type": "long"
                },
                "contents": {
                    "properties": {
                        "imageUrl": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "invite": {
                            "properties": {
                                "charaType": {
                                    "type": "long"
                                },
                                "et": {
                                    "type": "long"
                                },
                                "hostMid": {
                                    "type": "long"
                                },
                                "partySeq": {
                                    "type": "long"
                                },
                                "st": {
                                    "type": "long"
                                }
                            }
                        },
                        "txt": {
                            "type": "text",
                           "analyzer": "hsd_kuromoji",
                           "fielddata": "true"
 
                        }
                    }
                },
                "ct": {
                    "type": "long"
                },
                "df": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "likeCount": {
                    "type": "long"
                },
                "mid": {
                    "type": "long"
                },
                "oplog_date": {
                    "type": "date",
                    "format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
                },
                "oplog_ts": {
                    "properties": {
                        "I": {
                            "type": "long"
                        },
                        "T": {
                            "type": "long"
                        }
                    }
                },
                "seq": {
                    "type": "long"
                },
                "ut": {
                    "type": "date",
                    "format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
                }
            }
        }
    }
728x90
300x250

+ Recent posts