2016-11-16 22 views
0

私はこのシンプルElasticsearchネストされた検索クエリ

{ 
    "_source": { 
    "id": 792477813014224900, 
    "metadata": { 
     "iso_language_code": "en", 
     "result_type": "recent" 
    }, 
    "retweeted": false, 
    "retweet_count": 330, 
    "user": { 
     "id": 149250899, 
     "listed_count": 0, 
     "protected": false, 
     "followers_count": 347, 
     "entities": { 
     "description": { 
      "urls": [] 
     } 
     }, 
     "screen_name": "Zwido_" 
} 

のようなES(Tweepy JSON)の文書を持っていると私はUSER_NAMEフィールドでベースの完全な一枚の文書を検索し、クエリしたいと思います。 私はこのコード

{ 
      "nested": { 
       "path": "_source", 
       "score_mode": "avg", 
       "query": { 
        "bool": { 
         "must": [ 
          { 
           "text": {"_source.user.user_name": user} 
          } 
         ] 
        } 
       } 
      } 
} 

をtryiedしかし、それは動作しませんし、私は私が間違っているのは何

TransportError(400, 'search_phase_execution_exception', 'failed to parse search source. unknown search element [nested] 

エラーを受信しましたか? ありがとうございます。

答えて

0

_sourceフィールドを指定する必要はありません+最上部にqueryがありません。代わりにこのようにしてください。

{ 
    "query": { 
     "nested": { 
      "path": "user", 
      "score_mode": "avg", 
      "query": { 
       "bool": { 
        "must": [ 
         { 
          "match": {"user.screen_name": user} 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

UPDATE

あなたuserフィールドがnestedタイプでない場合、あなたは、単にこのようにそれを行うことができます:あなたは変更する必要がありelasticsearchドキュメントhereで述べたように

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match": { 
      "user.screen_name": user 
      } 
     } 
     ] 
    } 
    } 
} 
+0

私はあなたの答えを受け入れました、それは働いています。私は "サイズ"を追加:1、1つだけのクエリをフィルタリングする。ありがとうございます – bezoadam

+0

喜んでそれが助け! – Val

0

elasticsearchにネストされたオブジェクトであることを伝えるためのデータのマッピング。これが完了すると、オブジェクトを照会することができます。

+0

私は@Valの回答は魅力のように動作すると信じていますが、「ユーザー」はネストされたタイプではないというエラーが表示されました。私はグーグルで_mappingsを試してみましたが、インデックスからデータを失うことなくマッピングを変更することはできません。私は今、何か提案に釘付けになっていますか? – bezoadam

+0

私が読んだ限り、マッピングを変更するためにデータを再索引付けする予定ですが、ダウンタイムはダウンタイムを防ぐためにインデックスのエイリアシングについてここで参照できる問題です。 –

+0

@bezoadam私は私の答えを更新しました。 – Val

関連する問題