elasticsearch 在ElasticSearch中匹配同一嵌套文档上的多个属性
我试图在ElasticSearch中完成嵌套文档上的布尔
elasticsearch 在ElasticSearch中匹配同一嵌套文档上的多个属性,
elasticsearch,nosql,
elasticsearch,Nosql,我试图在ElasticSearch中完成嵌套文档上的布尔和。假设我有以下两个文件 { "id": 1, "secondLevels": [ { "thirdLevels": [ { "isActive": true, "user": "anotheruser@domain.com" }
和
。假设我有以下两个文件
{
"id": 1,
"secondLevels": [
{
"thirdLevels": [
{
"isActive": true,
"user": "anotheruser@domain.com"
}
]
},
{
"thirdLevels": [
{
"isActive": false,
"user": "user@domain.com"
}
]
}
]
}
{
"id": 2,
"secondLevels": [
{
"thirdLevels": [
{
"isActive": true,
"user": "user@domain.com"
}
]
}
]
}
在本例中,我只希望匹配具有嵌套文档的文档(在本例中ID:2),这些文档同时具有isActive:true
和用户:user@domain.com
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "secondLevels.thirdLevels",
"query": {
"bool": {
"must": [
{
"term": {
"secondLevels.thirdLevels.isActive": true
}
},
{
"term": {
"secondLevels.thirdLevels.user": "user@domain.com"
}
}
]
}
}
}
}
]
}
}
}
然而,我的查询似乎同时显示了两个文档,因为第一个文档有一个thirdLevel
,它具有isActive:true
,另一个thirdLevel
,它具有适当的用户
有没有办法在查询/筛选时严格执行此操作,或者我必须在脚本中执行此操作?对于嵌套对象和嵌套查询,您已经充分利用了这一方法 您现在需要做的就是添加标志,并将整个
secondLevels
文档移到一边:
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "secondLevels.thirdLevels",
"query": {
"bool": {
"must": [
{
"term": {
"secondLevels.thirdLevels.isActive": true
}
},
{
"term": {
"secondLevels.thirdLevels.user": "user@domain.com"
}
}
]
}
},
"inner_hits": {
"size": 100
}
}
}
]
}
}
}
你用的是什么型号的橡皮筋?我已经创建了一个索引并在本地测试了您的查询,我只返回id=2的用户。我问的原因是,我相信“必须”分组应该默认为,除非您可能以某种方式默认为或