【问题标题】:What indexes are created when indexing a document in elasticsearch在elasticsearch中索引文档时会创建哪些索引
【发布时间】:2013-05-08 15:48:42
【问题描述】:

如果我创建它的类型的第一个文档,或者放置一个映射,是否为每个字段创建一个索引?

显然,如果我将“索引”设置为“已分析”或“未分析”,则该字段将被编入索引。

有没有办法存储一个字段,以便可以检索但从不搜索?我想这会节省很多空间吗?如果我将此设置为“否”,这会节省空间吗?

我仍然可以通过这个搜索,只是需要更多时间,还是完全无法搜索?

在插入一些文档并且我改变主意后,有没有办法让字段被索引?

例如,我可能有一个映射:

{
 "book":{"properties":{
     "title":{"type":"string", "index":"not_analyzed"},
     "shelf":{"type":"long","index":"no"}
}}}

所以我希望能够按标题搜索,但也能检索书所在的书架

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    index:no 确实不会为该字段创建索引,这样可以节省一些空间。完成此操作后,您将无法再搜索该特定字段。

    在这种情况下,了解_source 字段可能也很有用,该字段默认返回并包含您存储的所有字段。 http://www.elasticsearch.org/guide/reference/mapping/source-field/

    关于你的第二个问题: 你不能半途而废。当您以后想要索引特定字段时,您必须重新索引文档。

    这就是您可能需要重新考虑设置 index:no 等的原因。事实上,一个好的策略是根本不为字段定义架构,除非您 100% 确定需要非默认值例如,特定领域的分析器。否则 ES 将使用一般可用的默认值。

    【讨论】:

    • 谢谢!我可以反过来做吗? iv 告诉他索引一个字段但想擦除索引,但仍然能够恢复值。用例是我有一个 url 作为一个字段,并且索引这似乎很愚蠢。
    • 也许是语义,但我不确定我是否理解。如果你索引一个字段,然后想删除索引,你不能。相反,您必须预先决定根本不索引该字段。您仍然可以检索该值(当您明确存储该字段时,甚至不这样做,因为它默认是 _source 的一部分。如果您的意思是您仍然想在没有索引的情况下按字段搜索,那么不:这就是索引是为了。你不能一边吃蛋糕一边吃:)
    • 你已经回答了我的问题。有两种情况: 1. 我开始索引该字段,但后来决定我不需要搜索它。 2. 我开始不索引该字段,然后发现我想通过它进行搜索,所以想要索引它在这两种情况下,这都需要重新映射 doc_type 和重新索引,正如我从你那里了解到的那样。谢谢!!!
    • 确实如此。我的建议是选项 1。如果将来您碰巧有一个您不搜索的字段的索引,请问自己:“那又如何?”磁盘空间便宜,未使用的索引不占用 RAM。
    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多