0

我在 elasticsearch 中创建了一个索引 myindex,将一些文档加载到其中。当我访问时:

localhost:9200/myindex/mytype/1023

我注意到我的特定索引具有以下映射元数据:

mappings: {
  mappinggroupname: {
    properties: {
      Aproperty: {
        type: string
      }
      Bproperty: {
        type: string
      }
    }
  }
}

有什么方法可以添加“store:yes”和 index:“analyzed”而不必重新加载/重新索引所有文档?

请注意,当我想查看单个文档时...

即本地主机:9200/myindex/mytype/1023

我可以看到 _source 字段包含该文档的所有字段,当我转到头插件的“浏览器”部分时,似乎所有列都是正确的并且与我的字段名相对应。那么为什么“存储”没有出现在元数据中呢?我什至可以对它们执行 _search。

"stored":"true" 与通过我上面提到的方法索引所有文档后可以看到所有字段和值的事实有什么区别?

4

1 回答 1

0

不,不可能!这就是您的文档在底层 lucene 中被索引的方式。改变它的唯一方法是重新索引它们!

您会看到所有这些字段,因为您看到了_sourcelucene 中特殊字段的内容,该字段默认情况下通过 elasticsearch 存储。您没有单独存储所有字段,但您确实拥有最初通过 索引的源文档,这_source是一个包含整个文档的单个字段。

通常_source字段就足够了,您通常不需要将每个字段都配置为已存储。

"index":"analyzed"此外,如果未为所有string字段指定默认值。这意味着如果未在映射中指定,则使用标准分析器对这些字段进行索引和分析。因此,据我从您的映射中可以看出,这两个字段应该被索引,因此可以搜索。

于 2013-05-13T17:02:30.690 回答