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는 _mappingPOST 요청 방법을 사용하여 맵을 조회합니다.
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는 _mappingPOST 요청 방법을 사용하여 맵을 조회합니다.여러 개의 맵을 조회할 때 사용하기만 하면 추가를 분할할 수 있습니다
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 대상을 사용하고 관련 코드는 새로 추가된 맵의 내용을 참고할 수 있습니다.
개인의 수준이 제한되어 있고 위의 내용은 명확하게 묘사되지 않았거나 잘못된 부분이 존재할 수 있습니다. 만약에 개발 학생이 발견하면 제때에 알려주십시오. 저는 가장 먼저 관련 내용을 수정할 것입니다.만약 나의 이 내용이 너에게 어떤 도움이 된다면, 나에게 좋아요를 눌러 주세요.너의 칭찬이 바로 내가 전진하는 동력이다.

좋은 웹페이지 즐겨찾기