Search code examples
elasticsearch

How to copy some ElasticSearch data to a new index


Let's say I have movie data in my ElasticSearch and I created them like this:

curl -XPUT "http://192.168.0.2:9200/movies/movie/1" -d'
{
    "title": "The Godfather",
    "director": "Francis Ford Coppola",
    "year": 1972
}'

And I have a bunch of movies from different years. I want to copy all the movies from a particular year (so, 1972) and copy them to a new index of "70sMovies", but I couldn't see how to do that.


Solution

  • Since ElasticSearch 2.3 you can now use the built in _reindex API

    for example:

    POST /_reindex
    {
      "source": {
        "index": "twitter"
      },
      "dest": {
        "index": "new_twitter"
      }
    }
    

    Or only a specific part by adding a filter/query

    POST /_reindex
    {
      "source": {
        "index": "twitter",
        "query": {
          "term": {
            "user": "kimchy"
          }
        }
      },
      "dest": {
        "index": "new_twitter"
      }
    }
    

    Read more: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html