我们可以在查询时抑制 ES 中的嵌套类型对象吗
Can we suppress nested type object in ES on query time
abcInfo 列的类型为 = 嵌套并在 ES 中编制索引。
abcInfo =
[
{
"number": "1",
"status": "Yes"
},
{
"number": "2",
"status": "No"
},
...
]
使用的查询:
{
"nested": {
"score_mode": "max",
"path": "abcInfo",
"query": {
"bool": {
"filter": [
{'term': {'abcInfo.number.keyword' : number}},
{'term': {'abcInfo.status.keyword' : status}}
]
}
}
}
}
type=nested 的理想用法用于以下结果
number status result
1 Yes Got
1 No -
2 Yes -
2 No Got
- 现在是有趣的部分,这是我的问题
- 在查询的时候,我想强行告诉ES不要把这个当作嵌套类型列表
- 相反,我想要完成的是
number
应该匹配一个对象,而 status
应该匹配同一列表 abcInfo 中的另一个对象 [这是前面提到的嵌套类型]
- 如何在需要时在查询时抑制它,[因为我希望能够查询此处解释的两种情况]
- 下面是我想要的结果以及它的样子
number status result
1 Yes -
1 No Got
2 Yes Got
2 No -
在两个字段中将您的内容索引为嵌套和 non-nested。您无法在运行时控制嵌套对象的行为。
abcInfo 列的类型为 = 嵌套并在 ES 中编制索引。
abcInfo =
[
{
"number": "1",
"status": "Yes"
},
{
"number": "2",
"status": "No"
},
...
]
使用的查询:
{
"nested": {
"score_mode": "max",
"path": "abcInfo",
"query": {
"bool": {
"filter": [
{'term': {'abcInfo.number.keyword' : number}},
{'term': {'abcInfo.status.keyword' : status}}
]
}
}
}
}
type=nested 的理想用法用于以下结果
number status result
1 Yes Got
1 No -
2 Yes -
2 No Got
- 现在是有趣的部分,这是我的问题
- 在查询的时候,我想强行告诉ES不要把这个当作嵌套类型列表
- 相反,我想要完成的是
number
应该匹配一个对象,而status
应该匹配同一列表 abcInfo 中的另一个对象 [这是前面提到的嵌套类型] - 如何在需要时在查询时抑制它,[因为我希望能够查询此处解释的两种情况]
- 下面是我想要的结果以及它的样子
number status result
1 Yes -
1 No Got
2 Yes Got
2 No -
在两个字段中将您的内容索引为嵌套和 non-nested。您无法在运行时控制嵌套对象的行为。