중첩 객체 ("유형": "중첩 된")로 매핑되어야하는 목록이있는 정의 된 유형의 문서를 색인하려고하면 매핑됩니다 일반 개체 유형으로Nest를 사용하여 중첩 객체에 문제가 발생했습니다.
코드를 살펴 보자 나는이 같은 간단한 클래스를 가지고
:
[ElasticType()]
public class MyJob
{
[ValueFieldAttribute]
public int jobCode { get; set; }
[ValueFieldAttribute(Type = FieldType.nested)]
public IList<JobProfessionalFieldInfo> JobProfessionalFields { get; set; }
}
JobProfessionalFieldInfo 클래스의 코드는 다음과 같습니다
[ElasticType()]
public class JobProfessionalFieldInfo
{
[ValueFieldAttribute]
public int JobId { get; set; }
[ValueFieldAttribute]
public int CategoryId { get; set; }
}
코드를 ValueFieldAttribute 클래스의 경우 :
내 프로그램 : 나는 GET 작업/MyJob/_mapping와 인덱스의 매핑을 얻을 때 지금
static void Main(string[] args)
{
ConnectionSettings node = new ConnectionSettings(new Uri("http://localhost:9200"));
node.SetDefaultIndex("jobs");
ElasticClient client = new ElasticClient(node);
List<JobProfessionalFieldInfo> list = new List<JobProfessionalFieldInfo>();
list.Add(new JobProfessionalFieldInfo { CategoryId = 1, JobId = 1 });
list.Add(new JobProfessionalFieldInfo { CategoryId = 2, JobId = 2 });
var res = client.Index<MyJob>(new MyJob
{
jobCode = 1,
JobProfessionalFields = list
},"jobs", "MyJob",1);
}
, 내가 그것을 실행하면 인덱스 오브젝트를 성공적으로 ...하지만 (!), 나는 참조 해당 jobProfessionalFields에는 매핑에 "유형": "중첩"이 없습니다.
이 이 그것을 다시 얻을 안하는 동안에 인덱스 문서를 반환, 다음과 같은 쿼리 결과(즉 무엇 중첩 형은 권리이다 ..?) :
GET jobs/_search
{
"query":
{
"bool":
{
"must":
[
{"match": {"jobId":1}},
{"match": {"categoryId":2}}
]
}
}
}
그것은 아니다 end : 나는 here, 을 보았습니다. 응답 한 사람은 주석을 사용할 때 createIndex 및 Map 메소드를 수동으로 호출해야하지만 문제는 모든 일반 Map 메소드가 없다는 것입니다. .! here를 살펴 보자 : -
namespace Nest
{
public partial class ElasticClient...
그리고 난의 매핑을 넣어 비 일반적인지도 방법을 사용하는 방법을 모른다 (.. 여기의 시작 그냥이 링크에 들어갈 수 있도록하기 위해) 내 MyJob 클래스.
이 물건으로 jobProfessionalFields를 중첩 된 유형의 동료로 매핑 할 수 있습니까?
여러분 모두 도와 주셔서 감사합니다!