Elasticsearch는 기존 동적 템플릿을 기반으로 새 필드를 추가합니다.
6163 단어 Elasticsearch
Elasticsearch 데이터베이스를 조작할 때 필드를 추가하는 문제를 기록합니다. 업무 수요로 인해 ES에 필드를 추가해야 합니다. 이 필드는 키워드 형식을 사용할 수 없습니다. 검색할 때 이 필드를 모호하게 조회해야 하기 때문에 ES의 원래 템플릿에 필드 설정 단어를 추가해야 합니다.
1. 분사 설정
ES는 기본적으로 자신이 만든 색인에 대한 설정과 수정을 하지 않으면 표준에 따라 단어를 구분합니다.
내 업무에 필요한 필드는 쉼표로 구분된 문자열이기 때문에 쉼표로 구분된 분사기만 설정하면 된다.
나는 원래 동적 템플릿을 사용했기 때문에, 원래의 텍스트를 키워드로 바꾸었다
#ES
PUT /_template/template_access_log
{
"template": "poc*",
"settings": {
"index": {
"refresh_interval": "10s",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"translog": {
"flush_threshold_size": "1gb",
"sync_interval": "30s",
"durability": "async"
}
}
},
"mappings": {
"doc": {
"dynamic_templates": [
{
"string_as_keyword": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
}
],
"properties": {
"TRANSAMOUNT": {
"type": "double"
},
"consumeTime": {
"type": "integer"
},
"transTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
},
"aliases" : {
"poc" : {}
}
}
이 때 setting에 단어 설정과 필드를 추가해야 합니다
#ES
PUT /_template/template_access_log
{
"template": "poc*",
"settings": {
"index": {
"refresh_interval": "10s",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"translog": {
"flush_threshold_size": "1gb",
"sync_interval": "30s",
"durability": "async"
}
},
"analysis": {
"analyzer": {
"comma": {
"type": "pattern",
"pattern":","
}
}
}
},
"mappings": {
"doc": {
"dynamic_templates": [
{
"string_as_keyword": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
}
],
"properties": {
"TRANSAMOUNT": {
"type": "double"
},
"consumeTime": {
"type": "integer"
},
"transTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"OPENGROUPPATH": {
"type": "text",
"analyzer": "comma",
"search_analyzer": "comma"
}
}
}
},
"aliases" : {
"poc" : {}
}
}
위의 템플릿에 analysis 분사기와 OPENGROUPPATH 필드가 추가되었습니다. 완성된 후에 템플릿을 업데이트합니다.
--------------------------------------------------------------------------------------------------------------------------------------------
상술한 절차는 완벽하지 않습니까?
no
이 과정은 한 걸음 소홀히 했습니다. 동적 템플릿을 만든 후에 데이터가 끊임없이 ES에 기록되기 때문에 ES 인덱스 라이브러리에 POC로 시작하는 인덱스 라이브러리가 존재합니다. 새로 추가된 필드 데이터를 직접 연결하면 이 필드는 현재 존재하는 poc 라이브러리에서 우리가 설정한 템플릿에 따라 데이터를 만들지 않습니다.
wtf???
ES 동적 템플릿 라이브러리는 액세스된 데이터가 없고 인덱스 라이브러리가 생성되지 않은 경우에만 적용됩니다.
제 ES의 업무 데이터베이스는 달에 따라 데이터를 저장하고 생성된 데이터는poc201909와 같은 형식에 따라 데이터베이스를 생성합니다. 이때 우리는 poc201909 이 인덱스 라이브러리의 setting 구조와 필드를 설정해야 합니다.
# es
PUT /poc201909
{
"settings": {
"index": {
"refresh_interval": "1s",
"translog": {
"flush_threshold_size": "1gb",
"sync_interval": "30s",
"durability": "async"
}
},
"analysis": {
"analyzer": {
"comma": {
"type": "pattern",
"pattern":","
}
}
}
},
"mappings": {
"resultdata": {
"dynamic_templates": [
{
"string_as_keyword": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
}
],
"properties": {
"TRAMSAMOUNT": {
"type": "double"
},
"MONEY": {
"type": "float"
},
"transTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"OPENGROUPPATH": {
"type": "text",
"analyzer": "comma",
"search_analyzer": "comma"
}
}
}
}
}
이 때 데이터에 접근하면 새로 추가된 필드는 설정된 형식에 따라 데이터를 생성합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.