elasticsearch 변경mapping (끊임없이 서비스 재구성 인덱스)
3266 단어 elasticsearch
여기에 맵핑을 수정하는 방법이 있습니다. 그것은 인덱스를 다시 만들고 새로운 맵핑을 만드는 것입니다.너는 이것이 만약 생산 환경에 있다면 괜찮겠느냐고 물어볼 수도 있다.답은 당신이 처음부터 적당한 디자인을 취했다면 이것은 완전히 매끄러운 과도를 할 수 있다는 것이다.
어떤 합리적인 설계를 채택합니까?프로그램이 색인 라이브러리에 접근할 때, 진정한 indexName을 사용하지 않고 항상 같은 뜻을 사용합니다.reindex가 데이터를 완성한 후에 이전의 동의어를 수정하면 됩니다.알겠어요?
위의 사고방식을 참고하여 우리는 한 걸음 한 걸음 한다.
step1, 색인을 만듭니다. 이 색인의 이름은 버전 번호가 가장 좋습니다. 예를 들어 my_index_v1,my_index_등등
step2, 이 색인을 가리키는 동의어를 만듭니다.
curl -XPOST localhost:9200/_aliases -d '
{
"actions": [
{ "add": {
"alias": "my_index",
"index": "my_index_v1"
}}
]
}
'
이때, 너는 동의어를 통해 my_index 액세스.색인 만들기, 색인 삭제 등을 포함한다.
step3, 수요가 왔습니다. 맵핑을 변경해야 합니다. 이 때 새로운 인덱스를 만들어야 합니다. 예를 들어 이름이 my_index_v2(버전 업그레이드).,이 인덱스에서 새 맵핑 구조를 만듭니다.그리고 새로운 데이터를 새로운 index에 칠합니다.데이터를 삭제하는 과정에서 오래된 index에서 데이터를 직접 꺼내서 형식을 바꾸면 된다고 생각할 수 있습니다.어떻게 모든 오래된 index 데이터를 두루 훑어보는지 참고하십시오.
step4, 동의어 수정.v1을 가리키는 동의어를 가리키는 v2로 수정합니다.http 인터페이스는 다음과 같습니다.
curl -XPOST localhost:9200/_aliases -d '
{
"actions": [
{ "remove": {
"alias": "my_index",
"index": "my_index_v1"
}},
{ "add": {
"alias": "my_index",
"index": "my_index_v2"
}}
]
}
'
step5, 오래된 색인 삭제.
curl -XDELETE localhost:9200/my_index_v1
이외에 몇 가지 다른 방법도 맵핑을 변경할 수 있습니다.
1. 프로그램을 수정하고 필드를 추가합니다.
즉, 맵핑에 새로운 필드를 추가하고, 새로운 필드에 대한 접근 통계 검색을 할 수 있다는 것이다.이것은 두 곳을 수정해야 한다. 하나는 맵핑 추가 필드를 수정하는 것이다. 그리고 프로그램을 수정해서 필드를 새로운 필드로 바꾸는 것이다.
2. 필드 유형을 multi_로 변경field.
multi_field는 한 필드에 여러 개의 데이터 형식을 설정할 수 있습니다.multi_ 적용field의 가장 전형적인 장면은 하나의 형식은analyed로 정의되고 이 필드는 검색할 수 있으며 하나의 형식은 단어를 구분하지 않고 이 필드는 정렬에 사용됩니다.
모든 필드가 multi_로 업데이트될 수 있음field (object와nested 형식 제외).현재 created라는 필드가 있고 형식은string입니다.
{ "created": { "type": "string"} }
우리는 그것을 문자열과 날짜형으로 사용할 수 있는 유형을 추가할 수 있다.
curl -XPUT localhost:9200/my_index/my_type/_mapping -d '
{
"my_type": {
"properties": {
"created": {
"type": "multi_field",
"fields": {
"created": { "type": "string" },
"date": { "type": "date" }
}
}
}
}
}
'
표준적인 색인 재구성 방식을 사용할 때, 우리는 모든 type에 색인 동의어를 만드는 것을 추천합니다. 같은 색인 라이브러리에 있는 여러 type에도 동의어를 만들어서 방문하는 것을 추천합니다.즉, 하나의 index에는 하나의 type이 포함되어 있다.elasticsearch에서 크로스 index에서 데이터를 조회하는 것은 매우 편리하기 때문이다.이렇게 하면 우리는 reindex의 한 type 후에 즉시 type을 발효시킬 수 있다. index 아래의 모든 type을 재건한 후에야 동의어가 발효될 수 있다.
이런 화제에 흥미가 있습니까?메일 보내기 시작
[email protected]
나: 한단 사람, 자바, 자바스크립트, Extjs,oracle sql를 잘해요.
더 많은 나의 이전 문장, 나의 공간에 접근할 수 있다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.