복붙노트

[SPRING] Spring-Data-Elasticsearch 설정 : Spring은 설정 파일을 찾을 수 없습니까?

SPRING

Spring-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. ==============================

    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. ==============================

    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에 대해서도 동일한 작업을 수행해야합니다.

  3. from https://stackoverflow.com/questions/31992274/spring-data-elasticsearch-settings-spring-cant-find-config-file by cc-by-sa and MIT license