2017-08-29 8 views
0

私はelasticsearchを使用しています。各文書にはメタフィールド_idがあることがわかります。私はこのメタフィールドを使用してドキュメントを検索したいのですが、ドキュメント内の一意のフィールドとして他のフィールドはありません。しかし、_idは文字列であり、フィールドのマッピングをtype :keywordとして追加しない限り、検索することはできません。しかし、上記のように可能ですhere。だから私は別のフィールドnewFieldを文書に追加し、_idと同じにすることを考えています。これを行う1つの方法は、まずドキュメントを作成し、そのフィールドに_idを割り当ててドキュメントを再度保存します。しかし、これには2つの接続があり、それはそれほど良くありません。だから私は文書を作成中にnewFieldを設定する解決策を探したい。それも可能ですか?あなたがダッシュを含むドキュメントを検索することができますelasticsearch:ドキュメント作成中にメタフィールド_idを他のフィールドにコピー

答えて

0

PUT my_index/tweet/testwith- 
{ 
    "fullname" : "Jane Doe", 
    "text" : "The twitter test!" 
} 

私達はちょうど私たちは、以下のIDを持っている文書の検索にそのID

GET my_index/tweet/_search 
{ 
    "query": { 
    "terms": { 
     "_id": [ 
     "testwith-" 
     ] 
    } 
    } 
} 

でダッシュで文書を作成しました: testwith-

{ 
    "took": 9, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1, 
    "max_score": 1, 
    "hits": [ 
     { 
     "_index": "my_index", 
     "_type": "tweet", 
     "_id": "testwith-", 
     "_score": 1, 
     "_source": { 
      "fullname": "Jane Doe", 
      "text": "The twitter test!" 
     } 
     } 
    ] 
    } 
} 

見つかった。その中にある文書を検索することができます。追加フィールドのidを格納するためのインジェストパイプラインを使用した場合

関連する問題