0

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

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

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

于 2013-05-08T18:19:21.647 回答