2017-04-20 73 views
0

在我elasticsearch指數我有這是一個嵌套的對象,像這樣的屬性文件:在elasticsearch中,是否可以對嵌套對象使用常規查詢?

{ 
    "my_index": { 
    "mappings": { 
     "my_type": { 
     "properties": { 
      "nested_prop": { 
      "type": "nested", 
      "properties": { 
       "subprop1": { 
       "type": "boolean" 
       }, 
       "subprop2": { 
       "type": "keyword" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

我可以搜索與嵌套查詢對象現在,像這樣:

{ 
    "query": { 
     "nested": { 
      "path": "nested_prop", 
      "query": { 
       "bool": { 
        "must": [{ 
         "term": { 
          "nested_prop.subprop1": "true" 
         } 
        }, { 
         "term": { 
          "nested_prop.subprop2": "SOME_KEY" 
         } 
        }] 
       } 
      } 
     } 
    } 
} 

到目前爲止太好了。我使用querystring中的一個非常普遍的機制構建我的elasticsearch查詢。所以,我希望能夠用「常規」(非嵌套)查詢還是查詢文件,像這樣:

{ 
    "query": { 
     "term": { 
      "nested_prop.subprop1": "true" 
     } 
    } 
} 

不過,我只得到空的結果與類型的查詢,除非我包它變成nested查詢。

有沒有辦法使用嵌套對象的簡單查詢?

+0

此答案可能有所幫助:http://stackoverflow.com/questions/35353952/is-it-possible-to-search-nested-objects-in-elasticsearch-with-the-lucene-query-s/35354869# 35354869 – Val

+0

謝謝,@Val,雖然我不打算使用Lucene查詢語法,但我發現[answer](https://github.com/elastic/elasticsearch/issues/11322)與您指出的答案鏈接在:_「嵌套字段需要使用嵌套查詢/過濾器進行查詢,因爲多個文檔可以匹配,並且您需要能夠指定這些多個分數應該如何減少到單個分數。」# –

回答

0

這是不可能的(ES 5.3.1)與query_stringhttps://github.com/elastic/elasticsearch/issues/16551

對於其他查詢,無論您如何處理嵌套字段,都需要使用nested查詢來使用它。

+0

因此,使用'query_string'嵌套對象(鏈接的問題是關於什麼)對於像普通的'term'查詢(我所問的)其他查詢是必需的? –

+0

我很困惑。你提到'query_string' ...不管你用嵌套字段做什麼,你都需要一個嵌套的查詢來使用它。 –

+0

我提到'query_string'?你發佈的鏈接是關於'query_string' :)謝謝反正。更多信息在我對這個問題的評論。 –

相關問題