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
'IT > ELK' 카테고리의 다른 글
ElastAlert을 이용한 ElasticSearch-Slack 얼럿 구성 (0) | 2021.07.01 |
---|---|
Elasticsearch Disk 용량 제한 파라미터 (0) | 2021.07.01 |
Elasticsearch Log Cleanup ILM 설정하기 (0) | 2021.07.01 |
Elasticsearch 자주? 쓰이는 API 쿼리 목록 (0) | 2021.07.01 |
Kibana Index Pattern Id 변경방법 (0) | 2021.07.01 |