Elasticsearch 인덱스를 생성하는 방법

How Create Elasticsearch Indices



Elasticsearch는 로그 분석 및 검색에 사용되는 인기 있는 ELK 스택의 일부입니다. 응용 프로그램과 시스템은 문제를 해결하고 추적하는 데 매우 유용한 데이터를 지속적으로 기록합니다. ELK 스택을 사용하면 이러한 작업을 빠르고 쉽게 수행할 수 있는 최고의 도구를 갖게 됩니다.

이 빠른 자습서에서는 Elasticsearch, 특히 Elasticsearch 엔진에서 인덱스를 생성하는 방법을 살펴보겠습니다. 이 자습서를 따르기 위해 ELK 스택에 대한 포괄적인 지식이 필요하지는 않지만 다음 항목에 대한 기본 이해가 있으면 유리할 수 있습니다.







  • 터미널, 특히 cURL 사용
  • API 및 JSON에 대한 기본 지식
  • HTTP 요청 만들기

노트: 또한 이 자습서에서는 시스템에 Elasticsearch가 설치되어 실행되고 있다고 가정합니다.



Elasticsearch 인덱스란 무엇입니까?

일을 지나치게 단순화하거나 복잡하게 만들지 않으면 Elasticsearch 인덱스는 관련된 JSON 문서의 모음입니다.



이전 게시물에서 언급했듯이 Elasticsearch 인덱스는 Elasticsearch의 기본 저장소 단위로 간주되는 JSON 객체입니다. 이러한 관련 JSON 문서는 인덱스를 구성하는 단일 단위에 저장됩니다. Elasticsearch 문서를 관계형 데이터베이스의 테이블로 생각하십시오.





Elasticsearch 인덱스를 SQL 세계의 데이터베이스로 연결해 보겠습니다.

  • MySQL => 데이터베이스 => 테이블 => 열/행
  • Elasticsearch => 인덱스 => 유형 => 속성이 있는 JSON 문서

Elasticsearch 인덱스를 만드는 방법

Elasticsearch는 강력하고 직관적인 REST API를 사용하여 서비스를 노출합니다. 이 기능을 사용하면 HTTP 요청을 사용하여 Elasticsearch 클러스터에서 작업을 수행할 수 있습니다. 따라서 인덱스 생성 API를 사용하여 새 인덱스를 생성합니다.



이 가이드에서는 cURL을 사용하여 요청을 보내고 모든 사용자의 무결성과 사용성을 보존합니다. 그러나 cURL에 오류가 발생하면 Kibana 콘솔 사용을 고려하십시오.

Elasticsearch 클러스터에서 새 인덱스를 생성하는 구문은 다음과 같습니다.

놓다 /

인덱스를 생성하려면 기본 설정을 사용하여 인덱스를 생성하는 다른 매개변수 없이 인덱스 이름을 전달하기만 하면 됩니다.

인덱스 본문과 같이 인덱스의 다양한 기능을 지정할 수도 있습니다.

  • 인덱스 설정
  • 인덱스 별칭
  • 인덱스 필드에 대한 매핑

인덱스 이름은 필수 매개변수입니다. 그렇지 않으면 URIL(/)에 대한 오류가 발생합니다.

컬 -X PUT 로컬 호스트:9200
{'error':'uri [/] 및 [PUT] 메서드에 대한 잘못된 HTTP 메서드, 허용됨: [DELETE, HEAD, GET]','status':405}

이름이 single_index인 새 인덱스를 만들기 위해 요청을 전달합니다.

PUT /단일 인덱스

cURL의 경우 다음 명령을 사용합니다.

curl -X PUT 'localhost:9200/single_index?예쁜'

이 명령은 HTTP 상태 200 OK 및 다음과 같이 확인된 메시지가 있어야 합니다.

{
인정: 사실,
'shards_acknowledged': 참,
'인덱스': '단일_인덱스'
}

위의 요청은 구성을 지정하지 않았기 때문에 기본 설정으로 single_index 인덱스를 생성합니다.

인덱스 명명 규칙

Elasticsearch 인덱스의 이름을 생성할 때 다음 명명 표준을 준수해야 합니다.

  1. 인덱스 이름은 소문자여야 합니다.
  2. 인덱스 이름은 대시(-), 밑줄(_) 또는 더하기 기호(+)로 시작할 수 없습니다.
  3. 이름은 가 될 수 없습니다. 또는 ..
  4. 인덱스 이름에는 , /, *, ?, , |, ` `(공백 문자), ,, #과 같은 특수 문자를 사용할 수 없습니다.
  5. 인덱스 이름의 길이는 255바이트 미만이어야 합니다. 멀티바이트 문자는 인덱스 이름의 전체 길이에 포함됩니다. 예를 들어, 단일 문자의 길이가 8바이트인 경우 이름의 남은 총 길이는 255 – 8입니다.
  6. 최신 버전의 Elasticsearch에서 . Elasticsearch 플러그인에서 사용하는 숨겨진 인덱스 및 내부 인덱스용으로 예약되어 있습니다.

인덱스 본문을 만드는 방법

PUT 요청을 사용하여 인덱스를 생성할 때 생성하려는 인덱스에 대한 설정을 정의하는 다양한 인수를 전달할 수 있습니다. 본문에서 지정할 수 있는 값은 다음과 같습니다.

  • 별칭: 생성하려는 인덱스의 별칭 이름을 지정합니다. 이 매개변수는 선택 사항입니다.
  • 설정: 생성하려는 인덱스에 대한 구성 옵션을 정의합니다. 매개변수를 지정하지 않으면 기본 구성을 사용하여 인덱스가 생성됩니다.
  • 매핑: 이것은 인덱스의 필드에 대한 매핑을 정의합니다. 매핑에 포함할 수 있는 사양은 다음과 같습니다.
    • 필드 이름
    • 데이터 유형
    • 매핑 매개변수

본문 구성으로 인덱스를 생성하는 예는 아래 요청을 고려하십시오.

PUT /single_index_with_body
{
'설정': {
'number_of_shards': 2,
'number_of_replicas': 2
},
매핑: {
'속성': {
'필드1': { '유형': '객체' }
}
}
}

cURL에 해당하는 요청의 경우:

curl -XPUT 'http://localhost:9200/single_index_with_body' -H '콘텐츠 유형: 애플리케이션/json' -d'{ '설정': { 'number_of_shards': 2, 'number_of_replicas': 2 }, '매핑' : { '속성': { '필드1': { '유형': '객체' } } }}'

위의 요청은 2개의 샤드와 2개의 복제본이 있는 이름이 single_index_with_body인 새 인덱스를 생성합니다. 또한 필드 이름이 field1이고 유형이 JSON 개체인 매핑을 만듭니다.

요청을 보내면 요청 상태가 다음과 같은 응답을 받게 됩니다.

{
인정: 사실,
'shards_acknowledged': 참,
'인덱스': '단일_인덱스_포함_바디'
}

Acknowledged는 인덱스가 클러스터에서 성공적으로 생성되었는지 여부를 보여주고 shards_acknowledged는 시간 초과 전에 지정된 인덱스의 모든 샤드에 대해 필요한 수의 샤드 복사본이 시작되었는지 여부를 보여줍니다.

Elasticsearch 인덱스를 보는 방법

생성한 인덱스에 대한 정보를 보려면 인덱스 생성과 유사한 요청을 사용하지만 다음과 같이 PUT 대신 HTTP 메서드를 사용합니다.

GET /single_index_with_body

cURL의 경우

컬 -XGET http://localhost:9200/single_index_with_body

이 명령은 다음과 같이 요청된 인덱스에 대한 자세한 정보를 제공합니다.

{
'single_index_with_body': {
'별칭': { },
'매핑' : {
'속성' : {
'필드1' : {
'유형': '객체'
}
}
},
'설정' : {
'인덱스' : {
'라우팅': {
'할당' : {
'포함하다' : {
'_tier_preference': '데이터_콘텐츠'
}
}
},
'number_of_shards' : '2',
'제공된_이름': '단일_인덱스_포함_바디',
'생성일' : '1611045687208',
'number_of_replicas': '2',
'uuid' : '3TRkO7xmQcSUOOOGtb6pXVA',
'버전' : {
'생성됨' : '7100299'
}
}
}
}
}

결론

이 가이드에서는 Elasticsearch를 사용하여 인덱스 API를 생성하여 새 인덱스를 생성하는 방법에 대해 설명했습니다. 또한 인덱스 및 구성 설정에 적합한 이름을 만드는 방법에 대해서도 논의했습니다.

이 가이드를 사용하면 이제 Elasticsearch API를 사용하여 인덱스를 생성하고 볼 수 있습니다.