[SPRING] Spring-Data-Elasticsearch 설정 : Spring은 설정 파일을 찾을 수 없습니까?
SPRINGSpring-Data-Elasticsearch 설정 : Spring은 설정 파일을 찾을 수 없습니까?
Spring-Data-Elasticsearch에서는 elasticsearch_config.json에 정의 된 분석기와 매핑을 사용하려고합니다. 이 JSON 파일은 / src / main / resources 폴더에 있습니다.
내 JAVA 모델은 다음과 같습니다.
@Document(indexName = "test", type="Tweet")
@Setting(settingPath = "/elasticsearch_config.json")
public class Tweet {
@Id
private String idStr;
/** other fields, getters and setters are omitted **/
}
elasticsearch_config.json에는 설정과 매핑이 모두 포함되어 있습니다.
{
"settings": { /* some filters */},
"mappings": { /* some types' mappings*/ }
}
나는 컬 (curl)로 시도했지만, 인덱싱 / 검색에는 문제가 없습니다.
내 문제:
@Setting을 사용하여 컬링이 아닌 매핑을 구성하고 싶지만 @Setting 주석이 작동하지 않는 것 같습니다. @Setting을 사용하여 curl을 사용하여 매핑을 검사 할 때 elasticsearch_config.json에 정의 된 모든 매핑을 얻지 못합니다.
curl -X GET "localhost:9200/test/_mapping?pretty=true"
내 생각 엔 Spring이 elasticsearch_config.json을 제대로 찾을 수 없다는 것입니다. 그러나 이미 myproject / src / main / resources가 프로젝트의 빌드 경로에 있는지 확인했습니다 ...
어떤 도움을 주셔서 감사합니다, 감사합니다!
노트: 나는 작동 할 수있는이 해결책을 찾았지만 : 1. nodeBuilder의 출처를 이해하지 못합니다. 2. 내가 틀릴 수도 있지만, @Setting 만 사용하는 해결책이 아닌가?
업데이트 : 나의 맵핑 필자는 분석기를 매핑으로 분리했습니다. mappings.json은 다음과 같습니다.
{
"mappings": {
"Tweet": {
"_id": {
"path":"idStr",
"properties": {
"idStr": {
"type":"string",
"index":"not_analyzed",
"store":true
}
}
},
"numeric_detection" : true,
"dynamic_templates": [
{
"id_fields": {
"match":"userId*",
"match_mapping_type": "string",
"mapping": {
"type":"string",
"index":"no",
"store":true
}
}
},
{
"name_fields": {
"match":"*Name",
"match_mapping_type": "string",
"mapping": {
"type":"string",
"index":"no",
"store":true
}
}
}
],
"properties": {
"text": {
"type": "string",
"index":"analyzed",
"analyzer":"custom_analyzer",
"store": true
},
"createdAt": {
"type": "date",
"format": "yyyy-MM-dd",
"index":"analyzed",
"store": true
},
"testVersion": {
"type": "integer",
"index":"not_analyzed",
"store":false
}
}
}
}
}
해결법
-
==============================
1.@Setting 주석은 설정 부분 만 포함하는 파일을 가리켜 야합니다. 또한 사용자 정의 매핑을 지정하려면 @Mapping 주석을 사용하고 매핑 파일의 경로를 지정해야합니다. 그것은 이렇게 간다.
@Setting 주석은 설정 부분 만 포함하는 파일을 가리켜 야합니다. 또한 사용자 정의 매핑을 지정하려면 @Mapping 주석을 사용하고 매핑 파일의 경로를 지정해야합니다. 그것은 이렇게 간다.
@Document(indexName = "test", type="Tweet") @Setting(settingPath = "/settings/settings.json") @Mapping(mappingPath = "/mappings/mappings.json") public class Tweet { @Id private String idStr; /** other fields, getters and setters are omitted **/ }
myproject / src / main / resources / mappings /에 myproject / src / main / resources / settings / 및 mappings.json에 settings.json을 저장해야합니다.
그게 효과가있다.
-
==============================
2.마침내 그것이 작동하지 않고 있었던 이유를 발견했다!!
마침내 그것이 작동하지 않고 있었던 이유를 발견했다!!
Val이 말했듯이, 나는 elasticsearch_config.json 파일을 settings.json과 mappings.json으로 분해했다.
내 프로젝트 / src / main / architecture 리소스 :
- mappings + mappings.json - settings + settings.json
과
@Document(indexName = "test", type="SentimentTweet") @Setting(settingPath = "/settings/settings.json") @Mapping(mappingPath = "/mappings/mappings.json")
그러나 mappings.json에서 필자는 필드 매핑을 생략하고 매핑의 내용을 직접 입력해야합니다.
대신에:
{ "mappings": { "Tweet": { /* MAPPINGS CONFIGURATION ARE OMITTED */ } } }
mappings.json에서만 쓰기 :
{ "Tweet": { /* MAPPINGS CONFIGURATION ARE OMITTED */ } }
settings.json에 대해서도 동일한 작업을 수행해야합니다.
from https://stackoverflow.com/questions/31992274/spring-data-elasticsearch-settings-spring-cant-find-config-file by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring-MVC : 훌륭한 인프라 (컨피규레이션) 생성 및 중복 방지 (0) | 2019.02.22 |
---|---|
[SPRING] @Column insertable, updatable은 Spring JPA와 잘 어울리지 않습니까? (0) | 2019.02.22 |
[SPRING] 봄 RestTemplate - 비동기 대 sync restTemplate (0) | 2019.02.22 |
[SPRING] 감사 추적 테이블을 만들기 위해 최대 절전 모드 인터셉터를 사용하여 db에서 페치하지 않고 previouseState를 얻는 방법? (0) | 2019.02.22 |
[SPRING] 스프링 배치 프로세서 (0) | 2019.02.22 |