0

私はmongodbからelasticsearchへのpython船データを使用しました。

という名前のタイムスタンプ フィールドがあり、次のupdate_timeようにマッピングされます。

    "update_time" : {
        "type": "date",
        "format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
    },

epoch_millis タイムスタンプに使用されます。

すべてが完了したらrange、日付範囲でドキュメントをクエリしていました。しかし、何も返されません。いくつかの調査の後、問題は次のとおりだと思いました: python タイムスタンプint(time.time())は 10 桁ですが、elasticsearch では 13 桁です。公式の例:

PUT my_index/my_type/2?timestamp=1420070400000.

そのため、update_time フィールドを 1000 の倍数で更新しようとしました。

{
  "script": {
    "inline": "ctx._source.update_time=ctx._source.update_time*1000"
  }
}

残念ながら、すべてupdate_timeマイナスになっていることがわかりました。pow(2,32) -1次に、Java int 型がであり、 よりもはるかに低いことを思いつきました1420070400000。それで、タイムスタンプフィールドは int であってはならないと思いますか?

次に、フィールド値を int から string に更新したい (フィールド マッピング タイプを変更したくない。マッピング タイプの変更には再インデックスが必要であることはわかっているが、ここでは値の変更のみが必要である)

しかし、使用できるスクリプトがわかりません。公式のスクリプトドキュメントにはこれについて言及されていません

4

1 に答える 1