2013-05-13 86 views
0

我在elasticsearch中创建了一个索引myindex,在其中加载了一些文档。当我访问:无法在ES中搜索字段?

localhost:9200/myindex/mytype/1023 

我注意到我的特殊指标有映射以下元数据:

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

是否有某种方式来增加“存储:是”和索引:“分析”,而无需重新加载/重新索引所有文档?

注意的是,当我要查看一个单一的文件...

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

我可以看到_source字段包含文档的所有字段和当我转到头部插件的“浏览器”部分时,看起来所有的列都是正确的,并且与我的字段名相对应。那么为什么“存储”没有显示在元数据中?我甚至可以对他们进行搜索。

“stored”:“true”与通过上面提到的方法将所有文档编入索引后可以看到所有字段和值的事实之间有什么区别?

回答

0

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

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

一般_source字段就够了,你通常不需要配置每个字段的存储。

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

+0

但是,当我进入我的_head应用程序的“浏览器”并且源文档包含所有字段时,我可以看到所有字段。他们已经在技术上“储存”了吗? – Rolando 2013-05-13 17:06:57

+0

我更新了我的答案! – javanna 2013-05-13 17:18:16