이 게시물에서는 Elasticsearch® 별칭을 살펴보고 ObjectRocket 호스팅 큐레이터 구현에서 Alias 작업에 대한 액세스를 축하합니다. 또한 Elasticsearch 별칭의 장점과 사용 방법도 검토합니다.
Elasticsearch에서 별칭 사용 소개
2017년 8월 24일 ObjectRocket.com/blog에 처음 게시됨
우수한 Elasticsearch 위생을 위한 좋은 전략은 과도한 양의 데이터를 보유하는 대규모 인덱스를 피하는 것입니다. 그러나 데이터가 여러 인덱스에 분산된 후에는 해당 인덱스를 검색하는 가장 좋은 방법이 필요할 수 있습니다. 그런 점에서 별칭이 유용합니다.
Elasticsearch의 별칭은 정확히 다음과 같습니다. 인덱스 또는 여러 인덱스를 참조하는 데 사용할 수 있는 보조 이름으로, 필요에 따라 일부 필터링을 포함할 수도 있습니다. 이 게시물에서는 별칭을 사용하는 몇 가지 멋진 방법과 이 기능을 사용하는 절차를 안내하여 Object Rocket Elasticsearch 클러스터에 대한 Alias Curator 작업을 빠르고 쉽게 설정할 수 있도록 합니다.
별칭이 있는 CRUD(생성, 읽기, 업데이트 및 삭제)
별칭이 작동하는 방식에 대한 간단한 예를 살펴보겠습니다. _cat
를 사용하여 별칭을 나열할 수 있습니다. 각 별칭 인덱스 연결 및 필터링 또는 라우팅 적용 여부에 대한 행을 반환하는 API:
GET _cat/aliases?v
alias index filter routing.index routing.search
atest test1 – – –
atest test2 – – –
atest2 test2 * – –
또는 /_alias
를 사용할 수 있습니다. 모든 별칭 또는 /index/_alias
를 보려면 끝점 해당 인덱스에 대한 별칭만 볼 수 있습니다. 인덱스 템플릿을 사용하거나 PUT
를 사용하여 생성하는 동안 인덱스에 별칭을 추가할 수도 있습니다. 명령:
PUT /test2
{
“aliases” : {
“atest” : {},
“atest2” : {
“filter” : {
“term” : {“user” : “objectrocket” }
}
}
}
}
그런 다음 나중에 /_aliases
를 사용하여 추가하거나 수정합니다. 추가하거나 제거할 인덱스와 별칭을 지정하여 끝점을 지정합니다.
POST /_aliases
{
“actions” : [
{ “add” : { “index” : “test1”, “alias” : “atest” } },
{ “remove” : { “index” : “test3”, “alias” : “atest” } }
] }
여기에서 쿼리의 인덱스 이름 대신 별칭 이름을 사용할 수 있습니다. 단일 색인을 가리키는 별칭에 대해서만 문서를 색인화할 수 있다는 점에 유의하십시오. 공식 문서에서 얻을 수 있는 별칭에는 분명히 훨씬 더 많은 깊이가 있지만 이것은 별칭 작업에 대한 느낌을 줄 것입니다.
무엇이 중요한가요?
모든 것이 매우 간단해 보이고 이미 판매되었을 수도 있지만 그렇지 않은 경우 별칭이 정말 도움이 되는 몇 가지 장소가 있습니다.
다운타임 없이 재색인
Elasticsearch에서 가장 유용한 기능 중 하나는 재색인입니다. API. 그러나 다시 인덱싱한 후에도 이전 인덱스에서 새 인덱스로의 전환을 관리해야 합니다. 별칭을 사용하면 가동 중지 시간 없이 이 전환을 수행할 수 있습니다. 방법은 다음과 같습니다.
-
oldIndex
라는 색인이 있다고 가정합니다.newIndex
로 다시 인덱싱하고 싶습니다. . -
별칭
myalias
만들기oldIndex
에 추가합니다. . -
애플리케이션이
myalias
를 가리키는지 확인하십시오.oldIndex
가 아닌 . -
newIndex
생성oldIndex
에서 데이터 재인덱싱 시작 그 안에. -
newIndex
추가myalias
로oldIndex
제거 . 단일 명령으로 이 작업을 수행합니다. 변경 사항은 원자적(매우 작고 개별적임)이므로 전환하는 동안 문제가 없습니다. -
별칭으로 원하는 결과를 얻었는지 확인한 다음
oldIndex
를 제거할 수 있습니다. 준비가 되면.
불필요한 단계를 피하기 위해 애플리케이션에서 읽기 또는 쿼리에 별칭을 사용하는 것이 좋습니다.
시간 기반 인덱스 범위 파악
Logstash® 또는 Beats®를 사용하는 경우 something-yyyy.mm.dd
라는 색인에 익숙할 것입니다. . 이렇게 하면 데이터의 관리 및 관리가 정말 쉬워집니다. 와일드카드와 인덱스 목록은 원하는 만큼 항상 유연하지는 않습니다. 특히 날짜 범위를 검색하려는 경우에는 더욱 그렇습니다. 별칭은 이러한 경우에 대한 쉬운 솔루션을 제공합니다. 매일 로그스태시 인덱스가 있고 로그를 30일 동안 보관한다고 가정해 보겠습니다. 그러나 특정 유형의 쿼리에 대해서는 지난 7일만 확인해야 할 수도 있습니다. 별칭과 큐레이터를 사용하면 이 작업을 보다 쉽게 수행할 수 있습니다.
-
다음 예와 유사한 별칭을 만듭니다.
lastSevenDays
. -
기본적으로 새 별칭에 색인을 추가하도록 색인 템플릿을 설정합니다.
-
Elasticsearch 큐레이터 사용 별칭 작업 및 연령/패턴 필터 또는 기본 스크립트를 사용하여 7일이 지난 인덱스를 제거하는 반복 작업을 설정합니다.
-
여기에서
lastSevenDays
까지의 모든 검색 지난 7일 동안 생성된 지수만 조회합니다.
고객 사례
한 고객의 작은 예를 끝내고 싶습니다. 이 고객은 속도 저하 문제가 있었습니다. 몇 가지 검토 후에 우리는 그들의 일반적인 쿼리 중 하나가 실제로 클러스터의 전체 날짜 범위에서 검색하고 있다는 것을 발견했습니다. 이 쿼리는 이전에 나열된 시나리오와 매우 유사했고 지난 7일 동안의 데이터만 필요했기 때문에 지난 7일 동안의 인덱스를 가리키도록 정기적으로 업데이트되는 별칭으로 관리하기에 완벽한 후보였습니다. 다음 그래프에서 클러스터 성능에 미치는 영향이 놀랍다는 것을 알 수 있습니다.
이 별칭이 자주 쿼리되었기 때문에 이 변경 사항이 미친 영향을 확인할 수 있습니다. 이 그래프는 CPU 사용량이 모든 노드에서 50% 이상 감소했으며 쿼리 캐시 제거 수가 ~75% 감소했음을 보여줍니다. 조회 빈도와 색인 크기에 따라 표시되는 결과가 그렇게 극적이지 않을 수도 있지만, 이는 검색 범위와 색인을 적절하게 관리하는 것이 얼마나 중요한지 보여줍니다.
요약
별칭은 Elasticsearch 도구 상자의 또 다른 도구로, 일상적인 클러스터를 보다 쉽게 관리하고 사용할 수 있습니다. 이 게시물이 완전하지는 않지만 Elasticsearch 구현에서 별칭을 사용할 수 있는 위치와 방법에 대한 아이디어를 제공해야 합니다.
ObjectRocket을 통해 Alias Curator 작업을 어떻게 설정할 수 있습니까?
Elasticsearch 클러스터는 이미 별칭을 지원하지만 새로운 Alias Curator 작업 기능을 사용하면 필터를 지정하여 기준에 따라 정기적인 간격으로 별칭에서 인덱스를 추가하거나 제거할 수 있으므로 별칭의 정기적인 유지 관리를 간단하게 설정할 수 있습니다.
이를 설명하기 위해 lastSevenDays
Elasticsearch Curator를 사용하는 참조가 이미 있는 alias 예제. 이를 간단하게 유지하기 위해 큐레이터 작업의 첫 번째 실행이 별칭을 설정하도록 합니다. Curatortask에서 기존 별칭을 참조할 수 있으므로 더 많은 사용자 지정 설정을 원할 경우 별칭을 별도로 설정할 수 있습니다.
이 별칭을 관리하려면 지난 7일 이내에 생성된 연령 기준에 맞는 인덱스만 사용하여 최신 상태로 유지해야 합니다. Alias Curator 작업을 추가하려는 클러스터의 인스턴스 세부 정보 페이지에서 시작합니다.
이제 큐레이터를 선택하세요. 현재 큐레이터 작업을 보려면 탭하세요.
보시다시피 이미 몇 가지 큐레이터 작업이 있습니다. 이번에는 Alias Curator 작업으로 다른 것을 만들어 보겠습니다. 이렇게 하려면 작업 추가를 선택하세요. :
이제 별칭을 선택할 수 있습니다. 작업 유형:
작업 이름을 지정한 후 별칭 이름을 지정해야 합니다. lastSevenDays
를 사용합시다 이 예의 경우. 다음과 같은 몇 가지 옵션도 볼 수 있습니다. 추가 및 제거 . 이를 통해 별칭에서 추가 또는 제거하려는 인덱스에 대한 필터를 지정할 수 있습니다. lastSevenDays
동안 , 우리는 일부 인덱스를 추가하고 다른 인덱스를 제거할 것입니다. 둘 다 선택하겠습니다.
원하는 필터는 7일보다 최근의 모든 인덱스를 추가하고 7일보다 오래된 인덱스를 제거합니다. 입력한 후 인덱스는 다음 예와 유사합니다.
별칭을 최신 상태로 유지하기 위해 이 작업을 정기적으로 실행하도록 지정하기 위해 기본 간격(5분마다)으로 그대로 둘 수 있습니다. 작업 저장 선택 , 그리고 그게 다야! 이제 작업은 ElasticsearchAlias를 업데이트된 상태로 유지하기 위해 5분마다 실행됩니다.
Rackspace DBA 서비스에 대해 자세히 알아보십시오.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 영업 채팅을 클릭할 수도 있습니다. 지금 채팅하고 대화를 시작하세요.