2017-01-06 16 views
0

私は、次のクエリをしようとしている:Elasticsearchネストされたフィールドを取得

{ 
    "fields": [ 
     "id", 
     "payload", 
     "payload_parsed" 
    ], 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "must": [ 
         { 
          "match": { 
           "id": "some-id-123" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

​​はJSON文字列で、payload_parsedは解析されたペイロードです。私は、ペイロードが何であるか、そしてどれくらいのレベルのネストがあるのか​​分からない。私はpayload_parsedの質問をしていませんが、idにあります。これは私が得るエラーです:"field [payload_parsed] isn't a leaf field"

どのようにしてデータを取得できますか?

答えて

0

これは文書化された機能です。 fieldsでは、リーフノード、つまり子を持たないノードのみを使用できます。 あなたの場合は、_sourceでそのフィールドを取得する必要があります。 次のクエリを試してください:

{ 
    "fields": [ 
     "id", 
     "payload" 
    ], 
    "_source": "payload_parsed", 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "must": [ 
         { 
          "match": { 
           "id": "some-id-123" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 
関連する問題