Elasticserach 간단 한 실전 -- 1
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
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.