ElasticSearch(10) --- 색인 별칭 및 Rollover 스크롤을 사용하여 색인 만들기

4239 단어 elasticsearch
ElasticSearch6.3.2 집단 노드 냉(warm)열(hot) 분리에서 ElasticSearch 집단 노드의 냉열 분리를 실현했다. 새로 만든 인덱스는 hot 노드에만 분배할 수 있고 시간의 추이에 따라 낡은 역사 인덱스 데이터는warm 노드로 옮겨야 한다.따라서 ES 인덱스에 저장된 데이터는 일반적으로 시간에 따라 구분된다. 예를 들어 매달 자동으로 인덱스를 생성하여 이번 달에 생산된 모든 데이터를 저장한다.시간에 따라 생성된 색인을 더욱 편리하게 관리하기 위해 색인 템플릿을 사용하고 ES의 Rollover 기능을 결합하여 색인을 편리하게 관리할 수 있다.
먼저 색인 템플릿을 만듭니다. 색인 템플릿에 정의된 색인 별명은rollover에 사용할 수 없습니다.색인 템플릿의 색인 별칭은 일반적으로 여러 개의 물리적 색인을 가리키기 때문이다.구체적으로 참고할 수 있습니다: 롤러버-failing.여러 개의 물리 색인을 가리키는 색인 별명은 데이터를 쓸 수 없습니다.
PUT _template/pubchat
{
  "index_patterns": "pubchat-*",
  "settings": {
    "index": {
      "number_of_shards": "3",
      "number_of_replicas": "1",
      "routing": {
        "allocation": {
          "exclude": {
            "box_type": "warm"
          },
          "require": {
            "box_type": "hot"
          }
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "uid": {
          "type": "keyword"
        },
        "nick": {
          "type": "keyword"
        },
        "chatTime": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
        }
      }
    }
  },
  "aliases": {
    "pubchat-search-alias": {}
  }
}

색인 별명pubchat-search-alias는 주로 검색 (읽기 작업) 을 위한 것입니다.두 가지 색인 별명을 구분하는 데 주의해야 한다. 하나는 write index이고, 다른 하나는 read index이며, 구체적으로는 ES Index Alias 공식 문서를 참고할 수 있다.
새 인덱스를 만들고 인덱스 템플릿에 자동으로 명중하며 인덱스pubchat-202001에 검색을 위한 별명을 만듭니다.pubchat-search-alias
# 
PUT pubchat-202001

롤오버 (스크롤 쓰기) 를 위한 색인 별명을 지정합니다.색인 별명pubchat-write-alias는 데이터 쓰기를 위한
#  rollover  
POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "pubchat-202001",
        "alias": "pubchat-write-alias"
      }
    }
  ]
}

rollover 별명pubchat-write-alias는 첫 번째 인덱스를 만들 때 한 번만 지정하면 뒤에 있는pubchat-write-alias는 자동으로 굴러간다:pubchat-2002,pubchat-20203...
rollover 인덱스 별명의 주요 역할은'스크롤 쓰기'이기 때문에 rollover 인덱스 별명은 구체적인 인덱스만 가리킬 수 있습니다.
An alias that points to one and only one index can be used to read and write data. An alias that points to more than one index is read-only.

색인 별칭에 대한 자세한 내용은 공식 문서를 참조하십시오. Write Index
색인에 대한 스크롤 정책을 지정합니다.이것은 테스트의 편의를 위해 색인에서 두 편의 문서를 초과하면 새로운 색인을 생성합니다.
#  rollover  
POST /pubchat-write-alias/_rollover 
{
  "conditions": {
    "max_docs":  2
  }
}

새로 만든 인덱스이기 때문에 데이터가 없기 때문에 다음과 같이 되돌려야 합니다.
{
  "acknowledged": false,
  "shards_acknowledged": false,
  "old_index": ""pubchat-202001",
  "new_index": "pubchat-202002",
  "rolled_over": false,
  "dry_run": false,
  "conditions": {
    "[max_docs: 2]": false
  }
}

마지막으로 롤오버 인덱스 별명인pubchat-write-alias에 데이터를 쓰면 롤오버가 지정한 정책을 충족시킬 때 자동으로 다음 인덱스를 만들 수 있습니다.
#  
PUT pubchat-write-alias/_doc/1
{
    "uid" : "111",
    "nick" : "test"
}

주의해야 할 것은: index.refresh_인터벌 파라미터는 스크롤 정책의 정확성에 영향을 줄 수 있습니다.예를 들어 max_docs 설정 2, refresh_인덱스에 포함된 문서의 수가 두 개보다 많을 수 있습니다.
하나의 예시 설명: 한 달에 하나의 인덱스(pubchat-yyyMM)를 생성하기 위해, 예를 들어pubchat-202001,pubchat-2002,pubchat-20203...
Rollover를 도입한 후에 데이터를 쓰는 것은pubchat-write-alias 인덱스(별명)에 쓰기만 하면 됩니다. 기록된 데이터가 지정한 rollover 정책을 터치하면 자동으로 새로운 인덱스가 생성됩니다. (정의된 인덱스 템플릿과 일치합니다.)
restHighLevelClient.bulkWrite("pubchat-write-alias");

Rollover를 사용하지 않으면 코드 논리에서 데이터를 작성해야 할 때 월별 판단에 따라 색인 이름을 생성합니다.
restHighLevelClient.bulkWrite("pubchat-202001");//1 
restHighLevelClient.bulkWrite("pubchat-202002");//2 
....



분명히 롤러버가 색인 관리를 간소화했다.또한 ES6.7 버전은 Index LifeCycle Management를 도입하여 인덱스를 더욱 편리하게 관리할 수 있을 것입니다.
원문:https://www.cnblogs.com/hapjin/p/11386965.html

좋은 웹페이지 즐겨찾기