如果我创建了它的第一个文档类型,或者放置了映射,是否为每个字段创建了一个索引?
显然,如果我将“index”设置为“已分析”或“未分析”,则该字段将被编入索引。
有没有办法存储一个字段,以便可以检索但从未搜索过?我想这会节省很多空间吗?如果我将其设置为“否”,这将节省空间吗?
我是否仍然可以通过此搜索,只需花费更多时间,还是完全无法搜索?
有些方法可以在插入一些文档后将字段编入索引并改变主意吗?
例如,我可能有一个映射:
{
"book":{"properties":{
"title":{"type":"string", "index":"not_analyzed"},
"shelf":{"type":"long","index":"no"}
}}}
所以我希望能够按标题搜索,还能检索书籍所在的书架
答案 0 :(得分:1)
index:no
确实不会为该字段创建索引,因此可以节省一些空间。完成后,您将无法再搜索该特定字段。
在这种情况下也许有用的是了解_source
字段,默认情况下返回该字段并包含您存储的所有字段。 http://www.elasticsearch.org/guide/reference/mapping/source-field/
关于你的第二个问题: 你不能半途而废。如果要稍后索引特定字段,则必须重新索引文档。
这就是为什么你可能想重新考虑设置索引:不等等。事实上,一个好的策略是不要为字段定义一个模式,除非你100%确定你需要一个非默认的例如,对于特定字段的分析器。否则ES将使用通常可用的默认值。