在ES中无法搜索的字段?

时间:2013-05-13 17:00:23

标签: elasticsearch

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

localhost:9200/myindex/mytype/1023

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

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

有没有办法添加“store:yes”和index:“analyze”而无需重新加载/重新索引所有文档?

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

即。本地主机:9200 / myindex / MYTYPE / 1023

我可以看到_source字段包含该文档的所有字段,当我转到head插件的“Browser”部分时,似乎所有列都是正确的并且对应于我的字段名。那么为什么“存储”没有出现在元数据中呢?我甚至可以对它们进行搜索。

“存储”之间有什么区别:“真实”与我通过上面提到的方式索引所有文档后可以看到所有字段和值的事实?

1 个答案:

答案 0 :(得分:0)

不,没办法!这就是你的文档在底层lucene中编入索引的方式。改变它的唯一方法是重新索引它们!

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

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

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