【发布时间】:2020-08-18 11:55:23
【问题描述】:
这是我的模型:
public class Student
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[Nested]
public List<Subject> Subjects { get; set; }
}
public class Subject
{
public int Id { get; set; }
public string SubjectName { get; set; }
}
映射:
mappings: {
student: {
properties: {
firstName: {
type: "string"
},
id: {
type: "integer"
},
lastName: {
type: "string"
},
subjects: {
type: "nested",
properties: {
id: {
type: "integer"
},
subjectName: {
type: "string"
}
}
}
}
}
}
要在嵌套对象(主题)中搜索,我使用以下代码,它会正确返回值。
var searchResponse = client.Search<Student>(s => s
.Query(q => q
.Nested(n => n
.Path(p => p.VolunteerTasks)
.Query(nq => nq.Match(m => m
.Query(searchText).Field("subjects.subjectName"))))));
return searchResponse.Documents;
但我想使用相同的 searchText 搜索 student.firstName、student.lastName 和 subjects.subjectName。
我该怎么做?
【问题讨论】:
-
运气好吗?如果您需要更多信息,请发表评论
-
是的,下面的答案可以帮助我找到解决方案。但现在我有另一个问题。我需要为 searchText 输入确切的单词才能得到结果。例如 SubjectName - "Science and technology" 如果我用技术搜索,它会返回记录。但是如果用techno搜索,它没有返回记录。我该如何解决这个问题?
-
为您评论中提到的要求提供了答案,理想情况下它是一个新要求,根据社区指南,您应该问一个不同的问题,所以建议再问一个问题,然后将我的答案转移到您的新问题也是如此。另外,由于我对原始问题的上一个回答很有帮助,因此如果您也对此表示赞同,那就太好了。提前致谢
-
感谢 Opster Elasticsearch Ninja。 jaspreet chahal 给出的答案帮助我解决了我的问题。我已经为此stackoverflow.com/questions/61629848/… 提出了一个单独的问题,你能检查一下并帮助我解决我的问题吗?谢谢
-
我以rest API的形式给出了方法和答案,它解决了这个问题。至少你可以投票,因为这些对寻找方法的人仍然有用
标签: c# elasticsearch nested elasticsearch-query elasticsearch-2.0