제12편elasticsearch의mapping투철한 이해

3553 단어 elasticsearch
우선 몇 개의 데이터를 삽입하여es가 자동으로 우리를 위해 색인을 만들도록 합니다
PUT /website/article/1
{
  "post_date": "2017-01-01",
  "title": "my first article",
  "content": "this is my first article in this website",
  "author_id": 11400
}

PUT /website/article/2
{
  "post_date": "2017-01-02",
  "title": "my second article",
  "content": "this is my second article in this website",
  "author_id": 11400
}

PUT /website/article/3
{
  "post_date": "2017-01-03",
  "title": "my third article",
  "content": "this is my third article in this website",
  "author_id": 11400
}

개별 검색 시도
GET /website/article/_search?q=2017  // 3              
GET /website/article/_search?q=2017-01-01 // 3 
GET /website/article/_search?q=post_date:2017-01-01  // 1 
GET /website/article/_search?q=post_date:2017  // 1 

질문 하나 인용: 왜 검색 결과가 일치하지 않는지 맵핑, 바로 index의 type 메타데이터입니다. 모든 type은 자신의 맵핑을 가지고 데이터 형식을 결정합니다. 역렬 인덱스를 만드는 행위, 그리고 검색하는 행위

맵핑에 대한 철저한 이해


(1)es에 데이터를 직접 삽입하면es는 자동으로 인덱스를 만들 수 있고 type과 대응하는mapping(2)mapping에서 각각field의 데이터 형식을 자동으로 정의할 수 있다. (3)서로 다른 데이터 형식(예를 들어text와date)은 exactvalue가 있을 수 있다. 어떤 것은fulltext(4)exactvalue가 있다. 역렬 인덱스를 만들 때 단어를 나눌 때전체 값을 하나의 키워드로 역렬 색인에 만드는 것이다.fulltext는 여러 가지 처리, 분사,normaliztion(시제 변환, 동의어 변환, 대소문자 변환, 단일 복수 변환)을 거쳐야 역렬 인덱스에 만들어진다(5) 동시에exactvalue와fulltext 형식의field가 결정된다. 검색할 때 exactvaluefield 또는fulltextfield를 검색하는 행위도 다르다.역렬 색인을 만드는 행위와 일치합니다.예를 들어 exactvalue를 검색할 때 전체 값에 따라 일치하는 것입니다.fulltextquerystring도 분사와 normalization을 하고 색인을 거꾸로 배열하여 검색(6)es의dynamicmapping을 사용하여 자동으로 맵핑을 만들 수 있습니다. 이는 데이터 형식을 자동으로 설정하는 것을 포함합니다.인덱스와 type의mapping을 미리 수동으로 만들 수도 있고, 각각field를 설정할 수도 있습니다. 데이터 형식, 인덱스 행위, 분사기를 포함합니다.

mapping의 핵심 데이터 형식


String、byte、short、intege、long、float、double、boolean、date
dynamic mapping
true or false –> boolean 123 –> long 123.45 –> double 2017-01-01 –> date “hello world” –> string/tex
맵핑 보기
GET /index/_mapping/type

좋은 웹페이지 즐겨찾기