Elasticsearch는 분포식, 확장 가능, 실시간 검색 및 데이터 분석 엔진입니다.검색, 분석, 탐색 능력을 부여합니다.
elasticsearch 용어
es 용어를 이해하는 것은 es 구조 설계를 신속하게 파악하는 기초이다
Node(노드)와 Cluster(집단) Elastic는 본질적으로 분포식 데이터베이스로 여러 서버가 협동하여 작업할 수 있고 각 서버는 여러 개의 Elastic 실례를 실행할 수 있다.하나의 Elastic 인스턴스를 하나의 노드(node)라고 합니다.하나의 노드가 하나의 집단 (cluster) 을 구성한다.
Index(인덱스) 인덱스는 관계 데이터베이스의 데이터베이스와 같습니다.매핑을 통해 여러 종류로 정의할 수 있습니다.인덱스는 논리적 네임스페이스가 하나 이상의 주요 조각에 매핑되며 0개 이상의 사본 조각 아래의 명령으로 현재 노드의 모든 인덱스를 볼 수 있습니다. $ curl -X GET 'http://localhost:9200/_cat/indices?v'
Document(문서) Index의 단일 레코드를 Document(문서)라고 합니다.여러 개의 Document가 Index(인덱스)를 구성합니다.같은 Index에 있는 Document는 같은 구조(scheme)를 요구하지 않지만 같은 구조를 유지하는 것이 검색 효율을 높이는 데 도움이 됩니다.Document는 JSON 형식으로 표현됩니다(예:
.
{
"user": " ",
"title": " ",
"desc": " "
}
Field 문서에 포함된 필드 또는 키 값 쌍입니다.필드의 값은 문자열, 정수, 날짜와 같은 간단한 (표량) 값일 수도 있고, 중첩된 구조는 하나의 그룹이나 대상과 같다.하나의 필드는 유사 관계 데이터베이스 테이블의 열이다.
Id(식별) 각 문서 ID는 하나의 문서를 식별합니다.문서의 색인/유형/ID는 고유해야 합니다.ID가 제공되지 않으면 자동으로 생성됩니다.
Source field(소스 필드)는 기본적으로 JSON 문서가 인덱스되어 _소스 필드에서 모든 get (가져오기) 과 검색 (검색) 요청이 되돌아오는 필드입니다.검색 결과에서 원본 데이터에 직접 접근할 수 있도록 해 줍니다. 다시 검색을 요청할 필요가 없습니다.주: 인덱스는 잘못된 JSON을 포함하더라도 전체 JSON 문자열을 되돌려줍니다.이 필드의 내용은 그 대상의 데이터가 어떻게 인덱스되는지 표시하지 않습니다.
Term(용어)은elasticsearch에서 용어(term)는 인덱스된 정확한 값입니다.용어foo,Foo,FOO는 기다리고 싶지 않습니다.용어 (즉 정확한 값) 는 "term"조회 인터페이스를 사용하여 조회할 수 있습니다.
Text(텍스트) 텍스트(또는 전문)는 이 단락과 같은 일반적인 비구조화된 텍스트입니다.기본적으로 텍스트는 색인에 실제로 저장되는 용어로 분석됩니다.텍스트 필드는 전체 텍스트 검색을 위해 색인할 때 분석해야 하며, 전체 텍스트 검색의 키워드는 색인할 때와 같은 용어를 분석해야 한다.
Type(유형) Document는 그룹을 나눌 수 있다. 예를 들어 weather라는 인덱스에서 도시(베이징과 상하이), 기후(맑은 날과 비 오는 날)에 따라 그룹을 나눌 수 있다.이 그룹을 Type이라고 합니다. 이 그룹은 가상 논리 그룹으로 Document를 필터링하는 데 사용됩니다.서로 다른 유형은 비슷한 구조(schema)가 있어야 한다. 예를 들어 id 필드는 이 그룹에서 문자열일 수 없고 다른 그룹에서 수치일 수 없다.이것은 관계형 데이터베이스의 표와 구별된다.성질이 완전히 다른 데이터 (예를 들어 제품과logs) 는 하나의 인덱스 안의 두 가지 유형 (할 수 있지만) 이 아니라 두 개의 인덱스로 저장해야 한다.
다음 명령은 각 Index에 포함된 Type을 나열합니다.$ curl 'localhost:9200/_mapping?pretty=true' 계획에 따라 Elastic 6.x 버전에서는 각 Index에 하나의 Type만 포함할 수 있습니다. 7.x 버전은 Type을 완전히 제거합니다.
맵핑(맵핑) 맵핑은 관계 데이터베이스의'모드 정의'와 같습니다. 색인마다 하나의 맵이 있습니다. 색인 유형을 정의하고 색인 범위 설정을 추가합니다. 맵은 명확하게 정의되거나 문서가 색인될 때 자동으로 생성됩니다.
Analysis(분석) 분석의 과정은 전문(full text)을 용어/분사(terms)로 전환하는 것이다.이것은 그 분석기 사용에 달려 있다
Shard(조각)는 하나의 조각이 하나의 단일한 Lucene의 실례이다.이것은 낮은 등급의 Elastic Search를 통해 자동으로 관리되는 일꾼 단원이다.인덱스는 논리적 네임스페이스가 주 블록과 복사본 블록을 가리킨다.인덱스의 주 분할 및 사본 분할 수량은 명확하게 지정되어야 합니다.그러나 당신의 코드는 색인만 처리해야 합니다.Elasticsearch는 클러스터의 모든 노드의 조각을 할당합니다.노드에 고장이 나거나 새 노드를 추가할 때, 자동으로 한 노드의 조각을 다른 노드로 이동할 수 있다.
Primaryshard(주 슬라이스)는 모든 문서가 하나의 주요 슬라이스에 저장됩니다.문서를 인덱스할 때, 인덱스는 먼저 메인 슬라이드에 생성된 후에야 메인 슬라이드의 모든 복사본에 도착합니다.기본적으로 인덱스는 5개의 메인 슬라이스가 있습니다.색인이 처리할 수 있는 문서 수에 적응하기 위해 더 많거나 더 적은 주 블록을 지정할 수 있습니다.색인을 만들면 색인에 있는 주 조각의 수를 바꿀 수 없습니다.
Replica shard(복제본 슬라이스)는 각 마스터 슬라이스당 0개 이상의 복제본을 가질 수 있습니다.복제본은 운영 슬라이스의 복제본으로 두 가지 역할을 합니다.
1. 고장 전이: 만약에 주 분할에 문제가 있으면 사본 분할은 주 분할을 향상시킬 수 있다.
2, 성능 향상: 가져오기 및 검색 요청은 주 분할 또는 사본 분할 처리를 할 수 있습니다.기본적으로 각 마스터 슬라이드에는 하나의 복사본이 있지만 인덱스의 복사본 수는 동적으로 변경할 수 있습니다.같은 노드에서, 사본 분할은 영원히 주 분할과 함께 실행되지 않을 것이다.
루트 문서를 인덱스하면 메인 슬라이스에 저장됩니다.이 부분의 선택은 해시의 루트 값을 통과하는 것이다.기본적으로 라우팅 값은 문서의 ID에서 가져옵니다.이 문서에 상위 문서가 지정되어 있으면 상위 문서의 ID를 사용합니다(이 하위 문서와 상위 파일이 같은 조각에 저장되어 있는지 확인합니다).이 루트 값은 색인할 때 지정한 수치나 설정 필드 맵을 통해 덮어쓸 수 있습니다.
상용 명령
색인 만들기$ curl -X PUT 'localhost:9200/weather' 서버가 JSON 대상을 되돌려줍니다. acknowledged 필드는 작업이 성공했음을 나타냅니다.