Elasticserach 간단 한 실전 -- 1

9207 단어
1. document 데이터 형식 2. 전자상거래 사이트 상품 관리 사례: 배경 소개 3. 간단 한 클 러 스 터 관리 4. 상품 의 CRUD 조작 (document CRUD 조작)
1. document 데이터 형식
문서 지향 검색 분석 엔진
(1) 응용 시스템 의 데이터 구 조 는 모두 대상 을 대상 으로 하 는 것 이다. 복잡 한 (2) 대상 데 이 터 는 데이터베이스 에 저장 되 고 분해 만 할 수 있 으 며 평면 적 인 여러 장의 표 로 변 한다. 조회 할 때마다 대상 형식 을 복원 해 야 한다. 상당히 번거롭다 (3) ES 는 문 서 를 대상 으로 하 는 것 이다. 문서 에 저 장 된 데이터 구 조 는 대상 을 대상 으로 하 는 데이터 구조 와 같다.이러한 문서 데이터 구 조 를 바탕 으로 es 는 복잡 한 색인, 전체 텍스트 검색, 분석 집합 등 기능 (4) es 의 document 을 json 데이터 형식 으로 표현 할 수 있 습 니 다.

 class Employee:
 

  private String email;
  private String firstName;
  private String lastName;
  private EmployeeInfo info;
  private Date joinDate;

}

private class EmployeeInfo {
  
  private String bio; //   
  private Integer age;
  private String[] interests; //     

}

EmployeeInfo info = new EmployeeInfo();
info.setBio("curious and modest");
info.setAge(30);
info.setInterests(new String[]{"bike", "climb"});

Employee employee = new Employee();
employee.setEmail("[email protected]");
employee.setFirstName("san");
employee.setLastName("zhang");
employee.setInfo(info);
employee.setJoinDate(new Date());

employee 대상: Employee 클래스 의 속성 을 포함 하고 Employee Info 대상 도 있 습 니 다.
두 장의 표: employee 표, employeeinfo 표, employee 대상 의 데 이 터 를 다시 뜯 어 Employee 데이터 와 Employee Info 데이터 employee 표 로 바 꿉 니 다.
email,first_name,last_name,join_date,4   

employee_info 표:
bio,age,interests,3   ;          ,  employee_id,   employee 
{
    "email":      "[email protected]",
    "first_name": "san",
    "last_name": "zhang",
    "info": {
        "bio":         "curious and modest",
        "age":         30,
        "interests": [ "bike", "climb" ]
    },
    "join_date": "2017/01/01"
}

우 리 는 es 의 document 데이터 형식 과 데이터 뱅 크 의 관계 형 데이터 형식의 차 이 를 알 게 되 었 다.
2. 전자상거래 사이트 상품 관리 사례 배경 소개
한 전자상거래 사이트 가 있 는데 ES 를 바탕 으로 백 스테이지 시스템 을 구축 하고 다음 과 같은 기능 을 제공 해 야 한다.
(1) 상품 정보 에 대한 CRUD (첨삭 개 검) 조작 (2) 간단 한 구조 화 조회 (3) 간단 한 전문 검색 을 수행 할 수 있 고 복잡 한 phrase (구문) 검색 (4) 전문 검색 결과 에 대해 하 이 라이트 디 스 플레이 (5) 데 이 터 를 간단하게 취 합 분석 할 수 있다.
3. 간단 한 클 러 스 터 관리
(1) 클 러 스 터 의 건강 상 태 를 신속히 검사한다.
es 는 cat api 라 는 api 를 제공 하여 es 의 다양한 데 이 터 를 볼 수 있 습 니 다.
GET /_cat/health?v

epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1488006741 15:12:21 elasticsearch yellow 1 1 1 1 0 0 1 0 - 50.0%
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1488007113 15:18:33 elasticsearch green 2 2 2 1 0 0 0 0 - 100.0%
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1488007216 15:20:16 elasticsearch yellow 1 1 1 1 0 0 1 0 - 50.0%
어떻게 집단의 건강 상 태 를 신속하게 이해 합 니까?green、yellow、red?

green:     primary shard replica shard  active   
yellow:     primary shard  active   ,    replica shard  active  ,        
red:       primary shard  active   ,          

왜 지금 옐 로 우 상태 일 까요?
우 리 는 지금 노트북 하나 로 es 프로 세 스 를 시 작 했 습 니 다. 하나의 node 만 있 는 것 과 같 습 니 다.현재 es 에 index 가 하나 있 는데 바로 kibana 가 자체 적 으로 내장 하여 만 든 index 입 니 다.기본 설정 은 index 마다 primary shard 5 개 와 replica shard 5 개 를 할당 하 는 것 이 며, primary shard 와 replica shard 는 같은 기계 에 있 을 수 없습니다 (잘못 사용 하기 위해).현재 kibana 가 직접 만 든 index 는 primary shard 1 개 와 replica shard 1 개 입 니 다.현재 node 가 하나 있 기 때문에 primary shard 1 개 만 할당 되 고 작 동 되 었 습 니 다. 그러나 하나의 replica shard 는 두 번 째 기계 로 작 동 하지 않 습 니 다.
작은 실험 을 합 니 다. 이때 두 번 째 es 프로 세 스 를 시작 하면 es 클 러 스 터 에 node 가 2 개 있 고 그 다음 에 replica shard 는 자동 으로 분 배 됩 니 다. 그리고 cluster status 는 green 상태 가 됩 니 다.
(2) 클 러 스 터 에 어떤 색인 이 있 는 지 빠르게 봅 니 다.
GET /_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open .kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1kb 3.1kb
(3) 간단 한 색인 작업
생 성 색인: PUT / testindex?pretty
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open test_index XmS9DTAtSkSZSwWhhGEKkQ 5 1 0 0 650b 650b yellow open .kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1kb 3.1kb
색인 삭제: DELETE / testindex?pretty
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open .kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1kb 3.1kb
4. 상품 의 CRUD 조작
(1) 신규 상품: 문서 추가, 색인 생 성
PUT /index/type/id
{
  "json  "
}
###############################################
PUT /ecommerce/product/1
{
    "name" : "gaolujie yagao",
    "desc" :  "gaoxiao meibai",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" ]
}
---------------  -----------------------------
{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}
########################################################
PUT /ecommerce/product/2
{
    "name" : "jiajieshi yagao",
    "desc" :  "youxiao fangzhu",
    "price" :  25,
    "producer" :      "jiajieshi producer",
    "tags": [ "fangzhu" ]
}
##############################################################
PUT /ecommerce/product/3
{
    "name" : "zhonghua yagao",
    "desc" :  "caoben zhiwu",
    "price" :  40,
    "producer" :      "zhonghua producer",
    "tags": [ "qingxin" ]
}


es 는 index 와 type 을 자동 으로 만 듭 니 다. 미리 만 들 필요 가 없습니다. 또한 es 기본 값 은 document 의 모든 field 에 거꾸로 색인 을 만들어 검색 할 수 있 도록 합 니 다.
(2) 상품 조회: 문서 검색
GET /index/type/id
GET /ecommerce/product/1
-----------------  --------------------
{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "name": "gaolujie yagao",
    "desc": "gaoxiao meibai",
    "price": 30,
    "producer": "gaolujie producer",
    "tags": [
      "meibai",
      "fangzhu"
    ]
  }
}

(3) 상품 수정: 문서 교체
PUT /ecommerce/product/1


{
    "name" : "jiaqiangban gaolujie yagao",
    "desc" :  "gaoxiao meibai",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" ]
}
--------------------------  -----------------------
{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "_version": 2,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": false
}

############################################
PUT /ecommerce/product/1
{
    "name" : "jiaqiangban gaolujie yagao"
}

교체 방식 이 좋 지 않 습 니 다. 모든 field 를 가 져 가 야 정 보 를 수정 할 수 있 습 니 다.
(4) 상품 수정: 문서 업데이트
POST /ecommerce/product/1/_update
{
  "doc": {
    "name": "jiaqiangban gaolujie yagao"
  }
}
--------------------------------  ----------------------------------
{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "_version": 8,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  }
}


제 스타일 은 사실 선택 이 있 는 상황 에서 ppt 를 읽 는 것 을 좋아 하지 않 거나 문서 에 따라 하거나 쓴 코드 를 직접 붙 여 넣 는 것 을 좋아 하지 않 습 니 다. 가능 한 한 손 으로 코드 를 두 드 리 는 것 을 좋아 합 니 다.
(5) 상품 삭제: 문서 삭제
DELETE /ecommerce/product/1
---------------------  ----------------------------
{
  "found": true,
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "_version": 9,
  "result": "deleted",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  }
}

{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1",
  "found": false
}

좋은 웹페이지 즐겨찾기