2013-10-10 104 views
1

部分我映射的是這樣的一個術語方面:Elasticsearch:是否可以查詢包含多個術語

{ 
    ... 
    INFO_NODO: { 
    properties: { 
     CODIGO: { 
     type: string 
     } 
     ESTADO: { 
     type: string 
     } 
     IN_HOME: { 
     type: string 
     } 
     TEXTO: { 
     type: string 
     } 
     ID_NODO: { 
     type: integer 
     } 
     ... 
    } 
    } 
} 

我需要做一個面,將返回的字段:ID_NODOTEXTOIN_HOME,ESTADO,CODIGOCOUNT解析它並將其提供給我的應用程序。關鍵是,除COUNT之外的所有這些字段都依賴於ID_NODO,也就是說,如果字段INFO_NODO是相同的,其餘信息是相同的......與理想情況下說的我想使我的方面依賴於整個INFO_NODO字段而不是其子字段。 我發現了幾個解決方案,但我一直未能正確實施它們,或者它們只是不工作。對我奇怪的情況有任何想法?

編輯:什麼我需要做的是:

{ 
    "facets": { 
    "FACET_X_NODO": { 
     "terms": { 
     "field": "INFO_NODO" 
     } 
    } 
    } 
} 

我只是不能語法沒有文檔,因爲INFO_NODO是一個子文檔,而不是一個領域。

+1

你應該看看腳本領域,你可以將所有子場進行了鍵,以便您的計數將在聚集領域的集合而不是一個。 – iouri

回答

1

如果我理解正確的,你應該能夠做這樣的事情:

{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "info_node_facet" : { 
      "terms" : { 
       "script_field" : "_source.INFO_NODO.CODIGO + _source.INFO_NODO.ESTADO", 
       "size" : 10 
      } 
     } 
    } 
} 
+0

這並不像你說的那樣工作,因爲它不讓我參考script_field一個子字段,但是我花了很長時間嘗試了這個:{ 「query」:{ 「match_all」:{} }, 「小面」:{ 「info_node_facet」:{ 「術語」:{ 「script_field」: 「_source.INFO_NODO」, 「大小」:10 } } } } 而這完全按照我需要的那樣工作。 非常感謝! – dElo

相關問題