什么是弹性搜索中的离线和在线索引?我们什么时候需要重新索引?

时间:2016-10-06 10:20:59

标签: elasticsearch

弹性搜索中的离线和在线索引是什么?我做了我的研究,但是找不到足够的资源来看看这些术语的含义是什么?任何的想法?还有什么时候我们需要重新索引?任何例子都很棒

此处使用术语离线和在线索引。

https://spark-summit.org/2014/wp-content/uploads/2014/07/Streamlining-Search-Indexing-using-Elastic-Search-and-Spark-Holden-Karau.pdf

1 个答案:

答案 0 :(得分:2)

重建索引

如果重新索引只是将一个索引复制到另一个索引,那么最基本的形式。

我使用这种形式的重建索引来更改映射。 Elasticsearch不允许您更改映射,因此如果要更改映射,则必须使用新映射创建新索引(index2),然后重新编制索引。 reindex将使用旧索引的数据填充该新映射。

下面的命令会将所有内容从索引移动到index2。

curl -XPOST 'localhost:9200/_reindex?pretty' -d'
{
  "source": {
    "index": "index"
  },
  "dest": {
    "index": "index2"
  }
}'

您还可以使用重建索引来填充旧索引的一部分。您可以使用几个参数来完成此操作。以下示例将复制最新的1000个文档。

POST /_reindex
{
  "size": 1000,
  "source": {
    "index": "index",
    "sort": { "date": "desc" }
  },
  "dest": {
    "index": "index2"
  }
}

有关重建索引的更多示例,请查看official documentation

离线与在线索引

在ONLINE模式下,构建新索引,同时可以读取和写入旧索引。旧索引的任何更新也将应用于新索引。

在OFFLINE模式下,表先被锁定以进行任何读取或写入,然后新索引将从旧索引构建。在重建索引时,表上不允许读取或写入操作。只有在操作完成后,才会释放对表的锁定,并允许再次读取和写入。