Elasticsearch-모듈

Elasticsearch는 기능을 담당하는 여러 모듈로 구성됩니다. 이 모듈에는 다음과 같은 두 가지 유형의 설정이 있습니다.

  • Static Settings− 이러한 설정은 Elasticsearch를 시작하기 전에 config (elasticsearch.yml) 파일에서 구성해야합니다. 이러한 설정에 따른 변경 사항을 반영하려면 클러스터의 모든 관심 노드를 업데이트해야합니다.

  • Dynamic Settings −이 설정은 라이브 Elasticsearch에서 설정할 수 있습니다.

이 장의 다음 섹션에서 Elasticsearch의 다양한 모듈에 대해 설명합니다.

클러스터 수준 라우팅 및 샤드 할당

클러스터 수준 설정은 다른 노드에 샤드 할당 및 클러스터 재조정을위한 샤드 재 할당을 결정합니다. 다음은 샤드 할당을 제어하기위한 설정입니다.

클러스터 수준 샤드 할당

환경 가능한 값 기술
cluster.routing.allocation.enable
모두 이 기본값은 모든 종류의 샤드에 대한 샤드 할당을 허용합니다.
예비 선거 이렇게하면 기본 샤드에 대해서만 샤드 할당이 허용됩니다.
new_primaries 이렇게하면 새 인덱스에 대한 기본 샤드에 대해서만 샤드 할당이 허용됩니다.
없음 이것은 샤드 할당을 허용하지 않습니다.
cluster.routing.allocation .node_concurrent_recoveries 숫자 값 (기본값 2) 이는 동시 샤드 복구 수를 제한합니다.
cluster.routing.allocation .node_initial_primaries_recoveries 숫자 값 (기본값 4) 이것은 병렬 초기 1 차 복구의 수를 제한합니다.
cluster.routing.allocation .same_shard.host 부울 값 (기본적으로 false) 이는 동일한 물리적 노드에서 동일한 샤드의 복제본을 두 개 이상 할당하는 것을 제한합니다.
indices.recovery.concurrent _streams 숫자 값 (기본값 3) 피어 샤드에서 샤드를 복구 할 때 노드 당 개방형 네트워크 스트림 수를 제어합니다.
indices.recovery.concurrent _small_file_streams 숫자 값 (기본값 2) 이는 샤드 복구시 크기가 5MB 미만인 작은 파일에 대해 노드 당 오픈 스트림 수를 제어합니다.
cluster.routing.rebalance.enable
모두 이 기본값은 모든 종류의 샤드에 대한 균형 조정을 허용합니다.
예비 선거 이렇게하면 기본 샤드에 대해서만 샤드 밸런싱이 허용됩니다.
복제본 이렇게하면 복제본 샤드에 대해서만 샤드 밸런싱이 허용됩니다.
없음 이것은 어떤 종류의 샤드 밸런싱도 허용하지 않습니다.
cluster.routing.allocation .allow_rebalance
항상 이 기본값은 항상 재조정을 허용합니다.
색인 _ 기본 _ 활성 이를 통해 클러스터의 모든 기본 샤드가 할당 될 때 재조정이 가능합니다.
Indices_all_active 이렇게하면 모든 기본 및 복제본 샤드가 할당 될 때 재조정이 가능합니다.
cluster.routing.allocation.cluster _concurrent_rebalance 숫자 값 (기본값 2) 이는 클러스터의 동시 샤드 밸런싱 수를 제한합니다.
cluster.routing.allocation .balance.shard 부동 값 (기본값 : 0.45f) 이는 모든 노드에 할당 된 샤드의 가중치 요소를 정의합니다.
cluster.routing.allocation .balance.index 부동 값 (기본적으로 0.55f) 특정 노드에 할당 된 인덱스 당 샤드 수의 비율을 정의합니다.
cluster.routing.allocation .balance.threshold 음수가 아닌 부동 값 (기본적으로 1.0f) 수행해야하는 작업의 최소 최적화 값입니다.

디스크 기반 샤드 할당

환경 가능한 값 기술
cluster.routing.allocation.disk.threshold_enabled 부울 값 (기본값 : true) 이것은 디스크 할당 결정자를 활성화 및 비활성화합니다.
cluster.routing.allocation.disk.watermark.low 문자열 값 (기본적으로 85 %) 이것은 디스크의 최대 사용량을 나타냅니다. 이 시점 이후에는 해당 디스크에 다른 샤드를 할당 할 수 없습니다.
cluster.routing.allocation.disk.watermark.high 문자열 값 (기본적으로 90 %) 이는 할당시 최대 사용량을 나타냅니다. 할당 시점에이 지점에 도달하면 Elasticsearch는 해당 샤드를 다른 디스크에 할당합니다.
cluster.info.update.interval 문자열 값 (기본적으로 30 초) 이것은 디스크 사용량 점검 사이의 간격입니다.
cluster.routing.allocation.disk.include_relocations 부울 값 (기본값 : true) 디스크 사용량을 계산하는 동안 현재 할당중인 샤드를 고려할지 여부를 결정합니다.

발견

이 모듈은 클러스터가 클러스터에있는 모든 노드의 상태를 발견하고 유지하는 데 도움이됩니다. 클러스터 상태는 노드가 추가되거나 삭제 될 때 변경됩니다. 클러스터 이름 설정은 서로 다른 클러스터 간의 논리적 차이를 만드는 데 사용됩니다. 클라우드 공급 업체에서 제공하는 API를 사용하는 데 도움이되는 몇 가지 모듈이 있으며 다음과 같습니다.

  • Azure 발견
  • EC2 발견
  • Google 컴퓨팅 엔진 검색
  • 선 발견

게이트웨이

이 모듈은 전체 클러스터 재시작시 클러스터 상태와 샤드 데이터를 유지합니다. 다음은이 모듈의 정적 설정입니다.

환경 가능한 값 기술
gateway.expected_nodes 숫자 값 (기본값 0) 로컬 샤드 복구를 위해 클러스터에있을 것으로 예상되는 노드 수입니다.
gateway.expected_master_nodes 숫자 값 (기본값 0) 복구를 시작하기 전에 클러스터에있을 것으로 예상되는 마스터 노드의 수입니다.
gateway.expected_data_nodes 숫자 값 (기본값 0) 복구를 시작하기 전에 클러스터에 예상되는 데이터 노드 수입니다.
gateway.recover_after_time 문자열 값 (기본적으로 5m) 이것은 디스크 사용량 점검 사이의 간격입니다.
cluster.routing.allocation. disk.include_relocations 부울 값 (기본값 : true)

클러스터에 결합 된 노드 수에 관계없이 복구 프로세스가 시작될 때까지 대기하는 시간을 지정합니다.

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

이 모듈은 HTTP 클라이언트와 Elasticsearch API 간의 통신을 관리합니다. 이 모듈은 http.enabled 값을 false로 변경하여 비활성화 할 수 있습니다.

다음은이 모듈을 제어하기위한 설정 (elasticsearch.yml에 구성됨)입니다.

S. 아니 설정 및 설명
1

http.port

Elasticsearch에 액세스하기위한 포트이며 범위는 9200-9300입니다.

2

http.publish_port

이 포트는 http 클라이언트 용이며 방화벽의 경우에도 유용합니다.

http.bind_host

http 서비스의 호스트 주소입니다.

4

http.publish_host

http 클라이언트의 호스트 주소입니다.

5

http.max_content_length

http 요청에있는 콘텐츠의 최대 크기입니다. 기본값은 100MB입니다.

6

http.max_initial_line_length

URL의 최대 크기이며 기본값은 4kb입니다.

7

http.max_header_size

이는 최대 http 헤더 크기이며 기본값은 8kb입니다.

8

http.compression

압축 지원을 활성화하거나 비활성화하며 기본값은 false입니다.

9

http.pipelinig

이것은 HTTP 파이프 라이닝을 활성화 또는 비활성화합니다.

10

http.pipelining.max_events

이는 HTTP 요청을 닫기 전에 대기열에 넣을 이벤트 수를 제한합니다.

지수

이 모듈은 모든 인덱스에 대해 전역 적으로 설정된 설정을 유지합니다. 다음 설정은 주로 메모리 사용량과 관련이 있습니다.

회로 차단기

이것은 작업이 OutOfMemroyError를 일으키는 것을 방지하기 위해 사용됩니다. 이 설정은 주로 JVM 힙 크기를 제한합니다. 예를 들어, 기본값은 JVM 힙의 70 % 인 indices.breaker.total.limit 설정입니다.

Fielddata 캐시

이것은 주로 필드에서 집계 할 때 사용됩니다. 할당 할 충분한 메모리가있는 것이 좋습니다. 필드 데이터 캐시에 사용되는 메모리 양은 indices.fielddata.cache.size 설정을 사용하여 제어 할 수 있습니다.

노드 쿼리 캐시

이 메모리는 쿼리 결과를 캐싱하는 데 사용됩니다. 이 캐시는 LRU (Least Recent Used) 제거 정책을 사용합니다. Indices.queries.cahce.size 설정은이 캐시의 메모리 크기를 제어합니다.

인덱싱 버퍼

이 버퍼는 새로 생성 된 문서를 인덱스에 저장하고 버퍼가 가득 차면 플러시합니다. indices.memory.index_buffer_size와 같은 설정은이 버퍼에 할당 된 힙의 양을 제어합니다.

샤드 요청 캐시

이 캐시는 모든 샤드에 대한 로컬 검색 데이터를 저장하는 데 사용됩니다. 인덱스 생성 중에 캐시를 활성화하거나 URL 매개 변수를 전송하여 비활성화 할 수 있습니다.

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

지수 복구

복구 프로세스 중에 리소스를 제어합니다. 다음은 설정입니다-

환경 기본값
indices.recovery.concurrent_streams
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512kb
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512kb
indices.recovery.compress 진실
indices.recovery.max_bytes_per_sec 40MB

TTL 간격

TTL (Time to Live) 간격은 문서가 삭제 된 후 문서의 시간을 정의합니다. 다음은이 프로세스를 제어하기위한 동적 설정입니다.

환경 기본값
indices.ttl.interval 60 년대
indices.ttl.bulk_size 1000

마디

각 노드에는 데이터 노드가 될지 여부에 대한 옵션이 있습니다. 이 속성은 다음을 변경하여 변경할 수 있습니다.node.data환경. 값을 다음과 같이 설정false 노드가 데이터 노드가 아님을 정의합니다.