ElasticSearch Nest 1.7에서 2.4로 응용 프로그램을 업그레이드하려고하는데 특성 기반 매핑이 일 때 일 필요가 있지만 (완전히) 그렇지 않습니다. 다음과 같은 모델 클래스가 있습니다 :ElasticSearch 2.x 특성 매핑에서 "NotAnalyzed"을 무시합니다.
Nest 1.x의 동등한 선언이 작동하고 필드에 대한 내 용어 쿼리가 예상했던 결과를 반환했습니다. 결과를 얻지 못했을 때 매핑을 확인했는데 놀랍게도 Index = FieldIndexOption.NotAnalyzed
은 존중되지 않았습니다.
"properties" : {
"description" : {
"type": "string"
}
"releasableTo" : {
"type": "string"
}
}
가 그래서 나도 사용자 정의 분석기 세트가 제대로 표시되었습니다했다 분야도 내가 분석 할 수 없습니다 필요한 필드가 제대로 표시되지 않은 : 내 생성 된 매핑은 다음과 같이이었다.
var indexDescriptor = new CreateIndexDescriptor(DefaultIndex)
.Mappings(ms => ms
.Map<Series>(m => m.AutoMap())
)
);
indexDescriptor.Settings(s => s
.NumberOfShards(3)
.NumberOfReplicas(2)
.Analysis(a => a
.CharFilters(c => c.Mapping("&_to_and", mf => mf.Mappings("&=> and ")))
.TokenFilters(t => t.Stop("en_stopwords", tf=>tf.StopWords(new StopWords(stopwords)).IgnoreCase()))
.Analyzers(z => z
.Custom("custom_en", ca => ca
.CharFilters("html_strip", "&_to_and")
.Tokenizer("standard")
.Filters("lowercase", "en_stopwords")
)
)
)
);
client.CreateIndex(indexDescriptor);
참고 : client
가 elasticsearch 클라이언트입니다
이
내가 모든 것을 초기화 호출하는 데 사용되는 코드입니다.나는 DataContract
속성이 엄격하게 ElasticSearch에 적용되지 않는다는 것을 알고 있지만 처리를 위해 이러한 객체를 디스크에 직렬화해야합니다. Nest 1.x에서는 충돌이 없었으므로 아무런 문제가 발생하지 않았습니다.
저는 분석기 작성에 관심이 없습니다. 나는 매핑이 타입보다 더 구체적인 것을 존중하지 않는다고 우려한다.
Nest 2.x에서 속성의 추가 정보를 존중하여 매핑을 선언 할 때 수동으로 매핑하지 않아도되는 방법은 무엇입니까?
는 그래서 매핑에 문제가 같은 시간에 매핑 된 다른 종류의해야 할 일을했을 것으로 밝혀졌습니다. 내가 잡지 않은 색인에서 무효 한 응답이있었습니다. 작업을 진행하는 데는 매우 실망 스럽지만 매핑이 올바르게 작동하고 있습니다.
참고 : @RussCam이 답변에서 지적한 오타가 수정되었습니다. –