2017-03-28 23 views
0
"chods": { 
    "mappings": { 
    "chod": { 
     "properties": { 
      "state": { 
       "type": "text" 
      } 
     } 
    }, 
    "chods": {}, 
    "variant": { 
     "_parent": { 
      "type": "chod" 
     }, 
     "_routing": { 
      "required": true 
     }, 
     "properties": { 
      "percentage": { 
       "type": "double" 
      } 
     } 
    } 
    } 
}, 

に弾性で適切にマッピングされていません。子供たちは両親

PUT /chods/variant/565?parent=36442 
{ // some data } 

それを返します:

{ 
    "_index":"chods", 
    "_type":"variant", 
    "_id":"565", 
    "_version":6, 
    "result":"updated", 
    "_shards":{ 
    "total":2, 
    "successful":1, 
    "failed":0 
    }, 
    "created":false 
} 

しかし、私はこのクエリを実行します。

GET /chods/variant/565?parent=36442 

parent = 36443

012のバリアントを返します
{ 
    "_index": "chods", 
    "_type": "variant", 
    "_id": "565", 
    "_version": 7, 
    "_routing": "36443", 
    "_parent": "36443", 
    "found": true, 
    "_source": { 
     ... 
    } 
} 

親が36443で36442でないのはなぜですか?

答えて

0

この手順を再現しようとすると、予想される結果(バージョン= 36442)が得られました。私は、の文書のPUTの後に出力が"_version":6であることに気づいた。ドキュメントのGETで、"_version": 7が返されます。別のバージョンの文書を投稿した可能性はありますか?

また、GET /chods/variant/565?parent=36443は親IDで実際にフィルタリングしないことに気付きました。クエリパラメータは無視されます。あなたが実際に親IDでフィルタリングする場合、これはあなたが探しているクエリです:

GET /chods/_search 
{ 
    "query": { 
    "parent_id": { 
     "type": "variant", 
     "id": "36442" 
    } 
    } 
} 
+0

よくログを確認しましたが、そうではありません。または、私は2つのPUT呼び出しを行っていますが、異なる親番号を持つためです。また、バージョン番号でGETリクエストを行うと、version_conflict_engine_exceptionが返されます –

+0

最後に置いた親番号はどれですか?最新ではないバージョンのドキュメントを更新しようとすると、 'version_conflict_engine_exception'を取得することは間違いありません。 – fylie

+0

最後の親は36443ですが、更新中ではなくGET/chods/variant/565?parent = 36442&version = 1のようなデータを取得する際に例外が発生します –

0

@fylieが指摘したように主な問題は、あなたが文書の同じIDを使用する場合は、ドキュメントを取得することです最後のバージョンで上書き -

の並べ替えは、我々はインデックス/テストや種類を持っていることを言うことができます「」タイプの子である「テスト」と、私たちは、コマンドを次のようにします。

PUT /tests/a/50?parent=25 
{ 
    "item": "C" 
} 

PUT /tests/a/50?parent=26 
{ 
    "item": "D" 
} 

PUT /tests/a/50?parent=50 
{ 
    "item": "E", 
    "item2": "F", 
} 

結果がどうなりますか? 1から3のドキュメントを作成することができます。 同じシャードにルーティングする場合、3つのバージョンを持つ1つのドキュメントになります。

3つの異なるシャードにルーティングする場合は、3つの新しいドキュメントになります。

+0

[こちら](https://discuss.elastic.co/t/can-two-documents-with-the-same-id-exist-if-they-have-different-parents/10988/5)についての投稿あなたが好奇心が強いのなら、それはなぜですか? :)(私は興味があった) – fylie

関連する問題