2017-05-29 29 views
0

在閱讀有關嵌套數據類型時,他們說每個嵌套對象都保存爲「單獨的隱藏文檔」。這是否意味着當我創建fieldName1嵌套類型。以下搜索將不再起作用?Elasticsearch嵌套數據類型 - 嵌套對象在原始文檔中是否仍然可見?

GET _search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "type": { 
      "value": "typeName" 
      } 
     }, 
     { 
      "match": { 
      "[email protected]": "keyword" 
      } 
     }, 
     { 
      "match": { 
      "fieldName1.#text": "foo" 
      } 
     } 
     ] 
    } 
    } 
} 

目前,我有一個數據庫,但沒有嵌套類型,我想包括嵌套部分用於fieldName1細化特定搜索的是「富」作爲關鍵字,但我不想失去我目前擁有的功能。

任何幫助,非常感謝。

回答

1

一旦你修改的fieldName1映射到nested您的查詢將需要更改爲使用不同的語法:

GET _search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "type": { 
      "value": "typeName" 
      } 
     }, 
     { 
      "nested": { 
      "path": "fieldName1", 
      "query": { 
       "bool": { 
       "must": [ 
        { 
        "match": { 
         "[email protected]": "keyword" 
        } 
        }, 
        { 
        "match": { 
         "fieldName1.#text": "foo" 
        } 
        } 
       ] 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

將返回仍將包含嵌套fieldName1數據的源文件。

+0

非常感謝!所以如果我理解正確,如果我不修改我的搜索,文檔將仍然包含嵌套的fieldName1數據。如果我想優化搜索,那麼我可以使用「嵌套」:{「path」:...查詢? – Jim

+0

是的,這是正確的 – Val

相關問題