我有一个索引,其中一些文档的字段名为" access_type" 。它可以有两个值,即"教师"或者"学生"。 对于"教师"作为" access_type"的值,将会有另一个名为" faculties"这是一个教师姓名列表。 因此,示例文档如下所示:
{
"access_type": "faculty",
"faculties": [
"facultyId1",
"facultyId2",
"facultyId3"
]
}
现在,如果我们有两个输入,则说一个用于access_type,另一个用于faculties。 如果我得到以下输入"教师"和" facultyId4" 。首先,我需要过滤掉与访问类型匹配的所有文档" faculty"然后在得到的结果中," facuultyId4"应该搜索字段" faculties"。因为" facultyId4"不在上面的文件中,它不应该被认为是一个打击。 如何将其实现为弹性搜索查询?
答案 0 :(得分:1)
POST http://your.elastic.host:9200/index/type/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"term": {
"access_type": "faculty"
}
},
{
"term": {
"faculties": "facultyId4"
}
}
]
}
}
}
}
}
答案 1 :(得分:0)
希望这能用于工作。
GET index/type/_search
{
"query": {
"filtered": {
"filter": {
"and": {
"filters": [
{
"query": {
"match": {
"access_type": "faculty"
}
}
},
{
"query": {
"match": {
"faculties": "facultyId4"
}
}
}
]
}
}
}
}
}