#c# #.net #elasticsearch
#c# #.net #elasticsearch
Вопрос:
у меня есть эластичный документ, и мне нужен поиск в skillsm, полное имя электронной почты и отзывы
"_source" : {
"applicantId" : 73,
"pmId" : 4,
"jobId" : 1,
"fullName" : "user user",
"email" : "gmail@gmail.com",
"phone" : "3024asfd148567",
"resumeContentLength" : 0,
"flag" : 0,
"note" : "",
"source" : "Uploaded",
"copiedJobId" : -1,
"skills" : "C#,Nodejs,MongoDb",
"applyDate" : "2020-06-05T09:51:48.8870000",
"dateLastActive" : "0001-01-01T00:00:00",
"attachments" : [
{
"id" : 695,
"fileName" : "27cd4643e2d91ac4c11997e772d3a4e7d8c.pdf",
"contentType" : "application/pdf",
"dateCreated" : "0001-01-01T00:00:00"
}
],
"feedbacks" : [{
"email" : "someuser@gmail.com",
"score" : -1,
"comment" : "Some text"
} ]
}
},
это мой код на c #
var xxx = client.Search<ElasticApplicant>(q => q.Index("hrm_applicants").Size(100)
.Query(x=>x.MultiMatch(p=>p.Fields(n=>n.Field(f=>f.Skills).Field(f=>f.ResumeContent))
.Query("համակարգիչ"))));
как включить поля вложенного массива в запрос?
Ответ №1:
Я решил эту проблему с помощью этого кода. Elasticsearch [7.9]
string keyword="keyword";
var searchResponse = client.Search<ElasticApplicant>(s => s
.Query(q => q
.Match(m => m
.Field(f => f.Skills)
.Query(keyword)
) || q
.Match(m => m
.Field(f => f.ResumeContent)
.Query(keyword)
) || q
.Nested(n => n
.Path(p => p.Feedbacks)
.Query(qq => qq.Match(m => m.Field(f => f.Feedbacks.First().Comment).Query(keyword))))
)
);