2016-03-21 12 views
0

ルーティングで検索すると、別のルーティングキーのデータも取得できます。 私を助けてください。単一フィールド上のelasticsearchルーティング

私はV2.0にルーティングを設定していると私は以下の例では、ルーティングキーでクエリを照会:

GET myindex/mytype/_search?routing=5 
{ 
    "query": { 
    "match_all": {} 
} 
} 

私は私が得るキー= 5が、出力をルーティングして検索データを持っていました:

hits": [ 
    { 
     "_index": "goqii", 
     "_type": "nazar", 
     "_id": "2047", 
     "_score": 1, 
     "_routing": "10", 
     "_source": { 
      "userId": "111239", 
      "activityId": "765982", 
      "activityUserId": "111239", 
      "activityType": "water", 
      "commentText": "kinu juice", 
      "status": "delievered", 
      "createdTime": "2016-01-13 13:28:54" 
     } 
    }, 
    { 
     "_index": "goqii", 
     "_type": "nazar", 
     "_id": "2046", 
     "_score": 1, 
     "_routing": "5", 
     "_source": { 
      "userId": "110554", 
      "activityId": "251449", 
      "activityUserId": "110554", 
      "activityType": "activity", 
      "commentText": "did home cycling yesterday for 20mins", 
      "status": "delievered", 
      "createdTime": "2016-01-13 12:04:31" 
     } 
    } 

私にルーティングキーを与えています:5 &ルーティングキー:10 boths data.please私が何か間違っている場合に助けてください。

+0

ペイロード – Val

+0

でクエリを送信するときにPOSTを使用すると、同じ出力が得られます。 –

+0

どのクライアントがクエリを送信していますか? – Val

答えて

0

シャード上のすべてのアイテムに同じルーティングキーが割り当てられているルーティングはありません。make sure that all the docs that share a routing key are all on the same shardです。

ルーティングは、文書がに存在しますどのシャードを決定するプロセスです。あなたは、インデックスを持っているん

どのように多くの破片?既定値は5です。

インデックスには、既定数のシャードがあるようです。

ルーティングスキームはドキュメントのIDをハッシュし、それを使用して シャードを検索します。ルーティングは、特定のルーティング値のドキュメントがすべて同じシャードに移動することを保証しますが、それは他のドキュメントがシャードにもルーティングされないことを意味しません。

あなたのケースでは、ユーザーID「110554」と「111239」の両方が同じシャードに割り当てられている可能性があります。

+0

私は10個のシャードを持っています。 –

+1

KK0608:5つのプライマリ+ 5レプリカか10のプライマリ+ 10レプリカがあるかどうかを確認できますか?前者の場合、@ rahulrocの答えは理にかなっています。 – Val

+0

@ KK0608、正確なシャード数を確認できるようにインデックス設定を行ってください – Rahul

関連する問題