Looking for elasticsearch Answers? Try Ask4KnowledgeBase
Looking for elasticsearch Keywords? Try Ask4Keywords

Elasticsearch탄성 검색 구성


비고

Elasticsearch에는 개발을위한 최상의 경험을 제공하는 일련의 기본값이 있습니다. 암시 적 진술은 생산에 꼭 필요한 것은 아니며, 이는 사용자의 필요에 맞게 작성되어야하며 따라서 예측할 수 없습니다.

기본 설정을 사용하면 구성을 변경하지 않고 동일한 시스템에서 여러 노드 쉽게 다운로드하고 실행할 수 있습니다.

설정은 어디에 있습니까?

Elasticsearch의 각 설치에는 config/elasticsearch.yml 있습니다. 여기에서 다음 설정 이 적용됩니다.

  • cluster.name
    • 노드가 결합중인 클러스터의 이름. 동일한 클러스터의 모든 노드는 동일한 이름을 공유 해야합니다 .
    • 현재는 기본적으로 elasticsearch 입니다.
  • node.*
    • node.name
      • 지정하지 않으면 노드가 시작될 때마다 임의의 이름이 생성 됩니다 . 이것은 재미있을 수 있지만 프로덕션 환경에는 적합하지 않습니다.
      • 이름은 고유 할 필요는 없지만 고유해야합니다.
    • node.master
      • 부울 설정입니다. 때 true , 그것은 노드가 자격이 마스터 노드이며이 선출 마스터 노드가 될 수 있다는 것을 의미한다.
      • 기본값은 true , 모든 노드가 적합한 마스터 노드임을 의미합니다.
    • node.data
      • 부울 설정입니다. true 노드가 데이터를 저장하고 검색 활동을 처리 함을 의미합니다.
      • 기본값은 true 입니다.
  • path.*
    • path.data
      • 노드에 대해 파일이 기록되는 위치입니다. 모든 노드는이 디렉토리사용 하여 메타 데이터를 저장하지만 데이터 노드는 이 디렉토리 를 사용하여 문서를 저장 / 색인화합니다.
      • 기본값은 ./data 입니다.
        • 즉, Elasticsearch 디렉토리 내부config 할 피어 디렉토리로 data 가 생성됩니다.
    • path.logs
      • 로그 파일이 기록되는 위치입니다.
      • ./logs 기본값입니다.
  • network.*
    • network.host

      • 사실 localhost _local_ 기본값입니다.
        • 즉, 기본적으로 노드는 현재 시스템 외부와 통신 할 수 없습니다.
    • network.bind_host

      • 잠재적 인 배열, Elasticsearch에게 소켓을 묶는 현재 컴퓨터의 주소를 알려줍니다.
        • 이 목록은 머신 외부의 머신 (예 : 클러스터의 다른 노드)이이 노드와 통신 할 수있게 해줍니다.
      • 기본값은 network.host 입니다.
    • network.publish_host

      • 이 노드와 가장 잘 통신하는 방법을 다른 노드에 알리는 데 사용되는 단일 호스트입니다.
        • network.bind_host 배열을 제공 할 때이 노드는 노드 간 통신에 사용되는 하나의 호스트 여야합니다.
      • 기본값은 network.host`입니다.
  • discovery.zen.*
    • discovery.zen.minimum_master_nodes
      • 마스터 선거를위한 정족수를 정의합니다. 이 방정식을 사용하여 설정 해야합니다 . (M / 2) + 1 여기서 M적법한 마스터 노드 ( node.master: true 사용하는 노드 node.master: true 암시 적 또는 명시 적 node.master: true )의 수입니다.
      • 기본값은 1 이며 단일 노드 클러스터에만 유효합니다!
    • discovery.zen.ping.unicast.hosts
      • 이 노드를 클러스터의 나머지 부분에 연결하는 메커니즘입니다.
      • 노드가 나머지 클러스터를 찾을 수 있도록 적합한 마스터 노드를 나열 해야 합니다.
      • 여기서 사용해야하는 값은 다른 노드의 network.publish_host 입니다.
      • localhost 기본 설정됩니다. 즉, 로컬 시스템에서만 클러스터가 결합 될 것입니다.

어떤 유형의 설정이 있습니까?

탄성 검색은 세 가지 유형의 설정을 제공합니다.

  • 클러스터 전체 설정
    • 이러한 설정은 모든 노드 또는 모든 색인과 같이 클러스터의 모든 항목에 적용되는 설정입니다.
  • 노드 설정
    • 이는 현재 노드에만 적용되는 설정입니다.
  • 색인 설정
    • 이러한 설정은 색인에만 적용됩니다.

설정에 따라 다음과 같이 할 수 있습니다.

  • 런타임시 동적으로 변경됨
  • 인덱스 재시작 (닫기 / 열기)에 따라 변경됨
    • 일부 색인 레벨 설정에서는 색인을 닫았다가 다시 열지 않아도되지만 적용 할 설정을 위해 색인을 강제로 다시 병합해야 할 수도 있습니다.
      • 인덱스의 압축 수준은이 설정 유형의 예입니다. 동적으로 변경할 수 있지만 새 세그먼트 만 변경 사항을 활용합니다. 따라서 인덱스가 변경되지 않으면 인덱스에서 해당 세그먼트를 다시 만들지 않는 한 변경의 이점을 얻지 못합니다.
  • 노드를 다시 시작한 후에 변경됨
  • 클러스터를 다시 시작한 후에 변경됨
  • 변경되지 않음

설정으로 할 수 있거나 할 수없는 일에 대해서는 항상 Elasticsearch의 버전에 대한 설명서를 확인하십시오.

설정을 적용하려면 어떻게해야합니까?

설정을 몇 가지 방법으로 설정할 수 있으며 그 중 일부는 제안되지 않습니다.

  • 명령 행 인수

Elasticsearch 1.x 및 2.x에서는 대부분의 설정을 es. 시작하는 Java 시스템 등록 정보로 제출할 수 있습니다 es. :

$ bin/elasticsearch -Des.cluster.name=my_cluster -Des.node.name=`hostname`

Elasticsearch 5.x에서는 -Des. 대신 -E 를 사용하여 사용자 정의 인수 유형을 사용하는 대신 Java 시스템 등록 정보 사용을 피하기 위해 변경됩니다 -Des. :

$ bin/elasticsearch -Ecluster.name=my_cluster -Enode.name=`hostname`

Puppet, Chef 또는 Anabilities와 같은 도구를 사용하여 클러스터를 시작하고 중지 할 때 설정을 적용하는이 방법이 유용합니다. 그러나 수동으로 수행 할 때 매우 잘 작동하지 않습니다.

  • YAML 설정
    • 예제에 표시됨
  • 동적 설정
    • 예제에 표시됨

설정이 적용되는 순서는 가장 동적 인 순서입니다.

  1. 일시적인 설정
  2. 지속적인 설정
  3. 명령 줄 설정
  4. YAML (정적) 설정

설정이 두 번 설정되면 해당 레벨 중 한 번에 한 번 설정하면 최고 레벨이 적용됩니다.

탄성 검색 구성 관련 예