UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Elasticsearch】ES6からES7へマイグレーションでindexからtypeがなくなる

ES6からES7へマイグレーションしていて

ES6のときからライトに使用していたので、アプリケーションの修正点は少なかったが、まとめておく

typeがindexがなくなる

www.elastic.co

template作成時に以下のようにmappingsの下にitemというtypeを作っていたが、ES7からtypeがなくなるので変更する必要がある

/_template/my-index-template
{
  "index_patterns": "twitter",
  "order": 0,
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 2
  },
  "mappings": {
    "item": {
      ...
    }
  }
}

検索の時なども

/twitter/item/_search

ではなく、

/twitter/_search

になる

Javaでの変更点

elasticsearch-rest-high-level-clientを使っている場合は以下が変更点となる

Before

IndexRequest indexReq = new IndexRequest(MY_INDEX, "item", myIndex.getId().getValue());

After

IndexRequest indexReq = new IndexRequest(MY_INDEX);
indexReq.id(myIndex.getId().getValue());

typeがあるindexをES7へrestore

これは特に何もせずできた

逆にES7でもtypeを保持しておきたい場合はinclude_type_name=true オプションをつけてあげればよいみたい