2017-01-25 19 views
0

鑑於本文檔中的ES 1.7嵌套像ES屬性(但W/O嵌套型)

{ 
        "_index": "prod", 
        "_type": "customerpropertieses", 
        "_id": "215c4bd7-7611-4c6a-8681-ef3b318613a0", 
        "_source": { 
        "properties": [ 
         { 
         "extentionPropertyId": 7, 
         "propertyName": "Video Introduction", 
         "value": "bla" 
         }, 
         { 
         "extentionPropertyId": 8, 
         "propertyName": "Guide Exp" 
         }, 
        ], 
        "id": "215c4bd7-7611-4c6a-8681-ef3b318613a0", 
        "parentId": "2222" 
        } } 

我想找到一個查詢,說如果propertyName和值在同一個大括號正確的查詢匹配一些值然後返回customerpropertieses文檔。

現在我可能做錯了以下查詢bc它返回一個customerpropertieses文檔時,任何propertyName匹配的查詢和任何值匹配的查詢。基本上,我想執行propertyName的和價值的分組是由相同的「對象索引」

ES查詢工作不正常

"query":{ 
      "type": "customerpropertieses", 
       "query": { 
        "bool": { 
        "must": [ 
         { 
         "bool": { 
          "must": [ 
          { 
           "match": { 
           "propertyName": { 
            "query": "Guide Exp" 
           } 
           } 
          }, 
          { 
           "match": { 
           "value": { 
            "query": "bla" 
           } 
           } 
          } 
          ] 
         } 
         } 
        ] 
        } 
       }  } 

我需要嵌套類型?

回答

2

簡短的回答:你確實需要使用嵌套的文檔。 略長:在內部,ES「扁平化」的,所以它看起來像在Lucene索引:

{ 
    extentionPropertyId: [7, 8], 
    propertyName: ["Video Introduction", "Guide Exp"], 
    value: ["bla"] 
} 

正如你可以看到,每一個「對象」之間的鏈接丟失。

下面是更長的解釋 https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html