我想过滤 envId、empId、project.Id、tests.id
由于您没有指定要应用于字段的任何特定过滤器,因此下面显示的搜索查询会根据文档过滤文档Id
映射:
{
"mappings": {
"properties": {
"enviID": {
"type": "integer"
},
"empID": {
"type": "integer"
},
"projects": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "text"
}
}
},
"tests": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "text"
}
}
}
}
}
}
搜索查询
{
"query": {
"bool": {
"filter": [
{
"bool": {
"must": [
{
"term": {
"enviID": {
"value": "123"
}
}
},
{
"term": {
"empID": {
"value": "456"
}
}
},
{
"nested": {
"path": "projects",
"query": {
"bool": {
"must": [
{
"match": {
"projects.id": 123
}
}
]
}
}
}
},
{
"nested": {
"path": "tests",
"query": {
"bool": {
"must": [
{
"match": {
"tests.id": 999
}
}
]
}
}
}
}
]
}
}
]
}
}
}
搜索结果
"hits": [
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_score": 0.0,
"_source": {
"enviID": 123,
"empID": 456,
"projects": [
{
"id": 123,
"name": "abc"
},
{
"id": 456,
"name": "xyz"
}
],
"tests": [
{
"id": 999,
"name": "xxx"
},
{
"id": 0,
"name": "yyy"
}
]
}
}
]
您可以参考此内容以了解有关查询过滤器上下文和嵌套查询过滤器的更多信息