読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

elasticsearchのmappingsの_idでpathを利用しようとしたらdeprecatedだった

elasticsearchでdocumentのindexを行う時に、そのdocumentを表す_idをsourceの中の指定したカラムから決めるというものがある。pathというもの。

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-id-field.html#_path

mappingsを作る時に以下のように指定することで、Index APIでPOSTを利用しても自動的にpost_idを_idに入れてくれる。

{
    "tweet" : {
        "_id" : {
            "path" : "post_id"
        }
    }
}

これを使おうとしていたら、なんとdeprecatedだった。


事情がよく分からなかったのでtwitterでつぶやいてたら、johtaniさんが教えてくれました。ありがとうございます。

つまり、インデクシングする際に指定されたドキュメントから、何かを取り出そうとすると、jsonでparseしなければならないため、パフォーマンスに影響が出てしまうということのようだった。


クライアント側で_idを指定するべきとなっていたので、諦めてそうすることにした。