logstash->output->elasticsearch 동적 템플릿부터
20126 단어 Elasticsearch
logstash 인덱스 맵
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_fields": {
"mapping": {
"index": "analyzed",
"omit_norms": true,
"type": "string",
"fields": { "raw": { "index": "not_analyzed", "ignore_above": 256, "type": "string" } } },
"match": "*",
"match_mapping_type": "string"
}
}
],
"_all": {
"enabled": true
},
"properties": {
"@version": {
"type": "string",
"index": "not_analyzed"
},
"geoip": {
"dynamic": "true",
"properties": {
"location": { "type": "geo_point" } }
}
}
},
"hkt_log": {
"dynamic_templates": [
{
"string_fields": {
"mapping": {
"index": "analyzed",
"omit_norms": true,
"type": "string",
"fields": { "raw": { "index": "not_analyzed", "ignore_above": 256, "type": "string" } } },
"match": "*",
"match_mapping_type": "string"
}
}
],
"_all": {
"enabled": true
},
"properties": {
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"@version": {
"type": "string",
"index": "not_analyzed"
},
"geoip": {
"dynamic": "true",
"properties": {
"location": { "type": "geo_point" } }
},
"host": {
"type": "string",
"norms": {
"enabled": false },
"fields": {
"raw": { "type": "string", "index": "not_analyzed", "ignore_above": 256 } }
},
"message": {
"type": "string",
"norms": {
"enabled": false },
"fields": {
"raw": { "type": "string", "index": "not_analyzed", "ignore_above": 256 } }
},
"path": {
"type": "string",
"norms": {
"enabled": false },
"fields": {
"raw": { "type": "string", "index": "not_analyzed", "ignore_above": 256 } }
},
"type": {
"type": "string",
"norms": {
"enabled": false },
"fields": {
"raw": { "type": "string", "index": "not_analyzed", "ignore_above": 256 } }
}
}
}
}
_ default _매핑
logstash의 출력 플러그인이elasticsearch일 때, logstash는 ES의 index 데이터에 현재'default'의 맵을 자동으로 생성합니다. 이 인덱스에 새로 추가된 type 맵핑은 이 default의 맵을 계승합니다. 이 default 맵, _all 필드는 disabled로 인식됩니다. 이 필드는 기본적으로 @version 필드를 추가합니다.geoip 필드dynamictrue는 이 필드에 동적으로 새 필드를 추가할 수 있음을 나타냅니다.
다음 type hkt_log는 default의 맵 내용을 계승합니다.
dynamic_templates
dynamic_를 통해templates, 새로운 필드에 대한 동적 맵 규칙을 완전히 제어할 수 있습니다.필드 이름이나 유형에 따라 다른 맵 규칙을 사용할 수 있도록 설정합니다.
모든 템플릿에는 이름이 하나 있는데, 이 템플릿이 무엇을 했는지 설명할 수 있다.또한 맵핑은 구체적인 맵 정보를 지정하는 데 사용되고, 최소한 매개 변수 (예를 들어 match) 는 어떤 필드에 이 템플릿을 사용해야 하는지를 규정하는 데 사용됩니다.
템플릿의 일치는 순서가 있습니다. 첫 번째 일치하는 템플릿이 사용됩니다.
위의 logstash 템플릿에서 모든 문자열 필드의 통계 설정 템플릿을 정의합니다.
{
"string_fields": {
"mapping": {
"index": "analyzed",
"omit_norms": true,
"type": "string",
"fields": {
"raw": {
"index": "not_analyzed",
"ignore_above": 256,
"type": "string" }
}
},
"match": "*",
"match_mapping_type": "string"
}
}
{
"address":
"city":
"name": "New York"
}
}
}
hkt_log 형식 매핑
우리는 hkt_를 볼 수 있다log 형식의 맵은default의 맵 내용을 완전히 계승하고 특정한 필드를 동적으로 추가하지만 모든 문자열 필드가string_를 따르는 것을 볼 수 있습니다fields 템플릿의 정의, 예를 들어 메시지 필드:
"message": {
"type": "string",
"norms": {
"enabled": false
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
메시지는 분석기가 분석하지 않은 원시적인 내용을 저장하는 하위 섹션raw가 있습니다.
그럼 많아졌어요. 이런 필드가 뭐가 좋을까요?우리 먼저 hkt_log에 문서 추가:
put logstash-2015.10.01/hkt_log/1
{
"message": "jfy/zhyy?123",
"@version": "1",
"@timestamp": "2015-11-12T03:14:41.435Z",
"type": "hostapd1_log",
"host": "server114",
"path": "/root/hostapd/hostapd1.log"
}
다음 검색 메시지 필드에 포함됩니까?의 문서:
{
"query":{
"regexp":{
"message":{"value":".*\\?.*"}
}
}
}
결과를 찾을 수 없습니다.
{
"query":{
"regexp":{
"message.raw":{"value":".*\\?.*"}
}
}
}
조회할 수 있습니다.
메시지 필드 내용 때문에 "jfy/zhyyy?123'은 분석기에 의해 분석된 후 세 단어로 변했다. jfy,zhyy,123, 그중의'/'와'?'분석기는 무시했다.
POST logstash-2015.10.01/_analyze
jfy/zhyy?123
{
"tokens": [
{
"token": "jfy",
"start_offset": 0,
"end_offset": 3,
"type": "" ,
"position": 1
},
{
"token": "zhyy",
"start_offset": 4,
"end_offset": 8,
"type": "" ,
"position": 2
},
{
"token": "123",
"start_offset": 9,
"end_offset": 12,
"type": "" ,
"position": 3
}
]
}
메시지.raw는 원형으로 저장되어 있기 때문에 어댑터로 조회할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Embulk를 사용하여 ElasticCloud로 보내기Embulk에서 ElasticCloud에 보낼 수 있을까라고 생각비망록도 겸해 기술을 남깁니다 Embulk 설치 ElasticCloud (14 일 체험판) brew라면 아래 명령 입력 파일 만들기 파일 내용 seed...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.