在阅读嵌套数据类型时,他们说每个嵌套对象都保存为“单独的隐藏文档”。当我将fieldName1创建为嵌套类型时,这是否意味着什么?以下搜索将不再有效?
GET _search
{
"query": {
"bool": {
"must": [
{
"type": {
"value": "typeName"
}
},
{
"match": {
"fieldName1.@description": "keyword"
}
},
{
"match": {
"fieldName1.#text": "foo"
}
}
]
}
}
}
目前,我有一个数据库,但没有嵌套类型,我想包括fieldName1的嵌套部分,以优化特定搜索“foo”作为关键字,但我不想失去我目前的功能。
非常感谢任何帮助。
答案 0 :(得分:1)
修改fieldName1
到nested
的映射后,您的查询需要更改为使用不同的语法:
GET _search
{
"query": {
"bool": {
"must": [
{
"type": {
"value": "typeName"
}
},
{
"nested": {
"path": "fieldName1",
"query": {
"bool": {
"must": [
{
"match": {
"fieldName1.@description": "keyword"
}
},
{
"match": {
"fieldName1.#text": "foo"
}
}
]
}
}
}
}
]
}
}
}
将返回的源文档仍将包含嵌套的fieldName1
数据。