Elasticsearch 베이스 04 - 매핑된 작업
39871 단어 Elastic#Elasticsearch
컨텐트
버전
Elasticsearch 버전
7.2.0
JAVA 의존 버전
7.2.1
Elasticsearch 7.x는 이전 버전과 상당히 큰 변화가 있기 때문에 본 편의 내용, 특히 JAVA 코드의 조작은 이전 버전을 사용하는 학우들에게 큰 도움이 되지 않을 것이다.본인은 주로 JAVA 개발이기 때문에 관련 조작을 소개할 때 JAVA 코드 조작의 논리를 덧붙입니다.
매핑된 작업
맵을 만들 때 색인을 기반으로 합니다. 먼저 색인을 만들어야 맵을 만들 수 있습니다.es의 맵은 전통 데이터베이스에서의 표 구조에 해당하고 데이터 저장 형식은 맵을 통해 규정된 것이다
새 매핑
색인과 유사하게 맵 생성도
PUT
방법을 사용합니다.http 요청
url: PUT "localhost:9200/test_city_info/_mapping"
맵을 만들 때 설정 내용을 설정해야 합니다. 요청된 헤더 정보를 설정해야 합니다. 그렇지 않으면 매개 변수 해석에 실패할 수 있습니다.
head: Content-Type:application/json
요청 매개 변수
{
"properties": {
"name": {
"type": "keyword"
},
"desc": {
"type": "text"
},
"celebrity": {
"type": "text"
},
"province": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"gdp": {
"type": "keyword"
}
}
}
응답
{
"acknowledged": true
}
java 코드
public static void createMapping() throws IOException {
PutMappingRequest putMapping = new PutMappingRequest("test_city_info4");
// mapping
XContentBuilder mapping = XContentFactory.jsonBuilder()
.startObject()
.startObject("properties")
.startObject("name")
.field("type","keyword")
.endObject()
.startObject("desc")
.field("type", "text")
.endObject()
.startObject("celebrity")
.field("type","text")
.endObject()
.startObject("province")
.field("type", "keyword")
.endObject()
.startObject("population")
.field("type", "keyword")
.endObject()
.endObject()
.endObject();
PutMappingRequest source = putMapping.source(mapping);
// RestClientUtils.client es ,
AcknowledgedResponse response = RestClientUtils.client.indices().putMapping(source, RequestOptions.DEFAULT);
System.out.println(response.isAcknowledged());
}
쿼리 매핑
Elasticsearch는
_mapping
의POST
요청 방법을 사용하여 맵을 조회합니다.http 요청
GET "localhost:9200/test_city_info/_mapping"
응답 내용
방금 만든 맵 내용입니다.
{
"test_city_info": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
}
}
java 코드
public static void getMapping() throws IOException {
GetMappingsRequest getMapping = new GetMappingsRequest();
getMapping.indices("test_city_info4");
// RestClientUtils.client es ,
GetMappingsResponse mapping = RestClientUtils.client.indices().getMapping(getMapping, RequestOptions.DEFAULT);
System.out.println(mapping.mappings().get("test_city_info4"));
}
다중 매핑 질의
Elasticsearch는
_mapping
의POST
요청 방법을 사용하여 맵을 조회합니다.여러 개의 맵을 조회할 때 사용하기만 하면 추가를 분할할 수 있습니다http 요청
GET "localhost:9200/test_city_info,test_city_info2/_mapping"
응답 내용
이전에 만든 두 개의 맵이 모두 검색된 것을 볼 수 있습니다.
{
"test_city_info2": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name2": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
},
"test_city_info": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
}
}
모든 맵 조회
중간 인덱스를 없애는 매개 변수를 직접 사용
_mapping
하면 이 실례에서 모든 인덱스의 맵을 조회할 수 있습니다.http 요청
GET "localhost:9200/_mapping"
응답 내용
{
"test_city_info3": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name3": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
},
"test_city_info2": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name2": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
},
"test_city_info": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
}
}
맵 수정
맵을 수정할 때 필드 형식을 수정할 수 없습니다.만약 필드 형식을 수정해야 한다면, 새로운 데이터 형식을 만들고 이전의 데이터를 새로운 필드로 가져올 수 있습니다.
http 요청
url: PUT "localhost:9200/test_city_info/_mapping"
헤더 메시지
head: Content-Type:application/json
요청 매개 변수
{
"properties": {
"name": {
"type": "keyword"
},
"desc": {
"type": "text"
},
"celebrity": {
"type": "text"
},
"province": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"gdp": {
"type": "keyword"
},
"college": {
"type": "text"
}
}
}
응답 내용
{
"acknowledged": true
}
다시 보기
이때 필드가 추가되었음을 알 수 있습니다
{
"test_city_info": {
"mappings": {
"properties": {
"celebrity": {
"type": "text"
},
"college": {
"type": "text"
},
"desc": {
"type": "text"
},
"gdp": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"population": {
"type": "keyword"
},
"province": {
"type": "keyword"
}
}
}
}
}
java 코드
수정 맵은 자바에서 새로 추가된 맵과 같은
PutMappingRequest
대상을 사용하고 관련 코드는 새로 추가된 맵의 내용을 참고할 수 있습니다.개인의 수준이 제한되어 있고 위의 내용은 명확하게 묘사되지 않았거나 잘못된 부분이 존재할 수 있습니다. 만약에 개발 학생이 발견하면 제때에 알려주십시오. 저는 가장 먼저 관련 내용을 수정할 것입니다.만약 나의 이 내용이 너에게 어떤 도움이 된다면, 나에게 좋아요를 눌러 주세요.너의 칭찬이 바로 내가 전진하는 동력이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch 베이스 04 - 매핑된 작업버전 정보 버전 Elasticsearch 버전 JAVA 의존 버전 Elasticsearch 7.x는 이전 버전과 상당히 큰 변화가 있기 때문에 본 편의 내용, 특히 JAVA 코드의 조작은 이전 버전을 사용하는 학우들...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.