제5편elasticsearch에서document의 핵심 메타데이터

4470 단어 elasticsearch

1、_index 메타데이터


(1) 문서가 어느 인덱스에 저장되었는지 대표한다. (2) 유사한 데이터는 하나의 인덱스에 놓고, 유사하지 않은 데이터는 다른 인덱스에 둔다. 제품 인덱스(모든 상품을 포함),sales 인덱스(모든 상품 판매 데이터를 포함),inventory 인덱스(모든 재고와 관련된 데이터를 포함).만약 당신이 예를 들어 제품,sales,humanresource(employee)를 모두 큰 index에 넣는다면, 예를 들어company index는 적합하지 않다.(3) index에는 유사한 문서가 많이 포함되어 있다. 유사하다는 것은 무슨 뜻인가. 사실은 이 문서들의fields는 대부분 같다. 당신이 3개의 문서를 넣었다고 하면 각각의 문서의fields는 완전히 다르다. 이것은 유사하지 않고 하나의 index에 넣기에 적합하지 않다.(4) 인덱스 이름은 소문자여야 합니다. 밑줄로 시작할 수 없고 쉼표를 포함할 수 없습니다. 제품, 웹 사이트, 블로그

2、_type 메타데이터


(1) 문서가 index에 속하는 어떤 종류(type)에 속하는지 대표한다. (2) 하나의 인덱스는 보통 여러 개의 type으로 나뉜다. 논리적으로 index에서 약간 다른 몇 가지 데이터를 분류한다. 같은 데이터 때문에 같은 필드가 많을 수 있지만 경미한 차이가 있을 수 있다. 소수의 필드가 다를 수 있다. 예를 들어 상품은 전자 상품으로 나눌 수 있다.생선 상품, 일본화 상품 등등.(3) type 이름은 대문자나 소문자일 수 있지만 밑줄로 시작할 수 없고 쉼표를 포함할 수 없습니다

3、_id 메타데이터


(1)document를 대표하는 유일한 표지는 index와 type과 함께 유일한 표지와 위치를 정할 수 있습니다(2)document의 id(put/index/type/id)를 수동으로 지정할 수도 있고, 지정하지 않을 수도 있습니다.es가 자동으로 id를 만들 수 있습니다

3.1. 수동으로documentid 지정


(1) 응용 상황에 따라 수동으로documentid를 지정하는 전제를 충족시키는지 여부:
일반적으로 어떤 다른 시스템에서 일부 데이터를 es로 가져올 때 이런 방식을 취한다. 바로 시스템에 있는 데이터의 유일한 표지를 사용하여 es에서document의 id로 삼는 것이다.예를 들어 우리는 현재 전자상거래 사이트를 개발하여 검색 기능을 하거나 OA시스템을 개발하여 직원의 검색 기능을 하고 있다.이때 데이터는 먼저 사이트 시스템이나 IT 시스템 내부의 데이터베이스에 있고 먼저 한 부가 있을 것이다. 이때 데이터베이스의primary 키(자성장, UUID 또는 업무 번호)가 있을 것이다.만약에 데이터를 es에 가져오면 데이터베이스에 있는primary 키를 사용하는 것이 비교적 적합합니다.
만약에 우리가 시스템을 만들고 있다면 이 시스템의 주요한 데이터 저장은es의 일종이다. 즉, 데이터가 생성된 후에 id가 없을 수도 있고 직접es를 저장할 수도 있다. 그러면 이럴 때 수동으로documentid를 지정하는 형식에 적합하지 않을 수도 있다. 왜냐하면 너도 id가 무엇인지 모르기 때문이다. 이때 아래에서 설명하고자 하는es가 자동으로 id를 생성하는 방식을 취할 수 있다.
put /index/type/id

3.2 문서 id 자동 생성

post /index/type
 :
POST /test_index/test_type
{
  "test_content": "my test"
}

자동 생성 id, 길이 20자, URL 보안, base64 인코딩, GUID, 분포식 시스템 병렬 생성 시 충돌이 발생할 수 없습니다.

4、_소스 메타데이터


우리가document를 만들 때 사용하는request body에 있는 json 문자열은 기본적으로 get에 있을 때 그대로 되돌아옵니다.이렇게 하면 반환 결과를 사용자 정의하여 어떤 필드를 반환할 수 있습니다.
put /test_index/test_type/1
{
  "test_field1": "test field1",
  "test_field2": "test field2"
}

get /test_index/test_type/1

{
  "_index": "test_index",
  "_type": "test_type",
  "_id": "1",
  "_version": 2,
  "found": true,
  "_source": {
    "test_field1": "test field1",
    "test_field2": "test field2"
  }
}

GET /test_index/test_type/1?_source=test_field2

{
  "_index": "test_index",
  "_type": "test_type",
  "_id": "1",
  "_version": 2,
  "found": true,
  "_source": {
    "test_field2": "test field2"
  }
}

좋은 웹페이지 즐겨찾기