2016-12-13 41 views
0

我索引一个非常简单的项目有场定义为这样:Elasticsearch 5.0.2未能搜索关键字

"comid": { 
    "type": "keyword", 
    "store": "false", 
    "index": "no", 
    "include_in_all": false, 
    "doc_values": false 
} 

我那么摄入的单个项目,其中comid =“这是一个id” 当我与查询精确匹配项目“这是一个id”

我得到这个错误:

cannot search on field [comid] since it is not indexed 

也许我误解的文件,但我认为,我们能够搜索关键字(U唱完全匹配)?

我想我可以通过改变关键字到文本的类型,然后使用关键字分析器(如果我正确地理解它的话是noop)来解决这个问题,但是对于每个关键字类型字段,这似乎很奇怪。

我必须在这里丢失一些明显的东西吗?

回答

0

如果没有编制索引,则字段数据仅存储在文档中,而不是索引,因此您无法使用该字段进行搜索。

参见:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html

+0

如果我用“指数”重新索引:真的,我可以查询的字段但不这意味着该领域正在分析?所以现在我需要为每个关键字字段指定一个noop分析器,我认为这很奇怪。除非关键字的默认分析仪是关键字分析仪(即noop) – BonitoFlakes

+0

是的,默认情况下会分析它。这是搜索引擎的一个非常合理的默认值。但您可以更改默认分析器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer.html – Javier

+0

似乎对于“关键字”类型,它不会接受“分析器”,因为它会抛出错误。官方文档没有提及“关键字”类型的默认分析器。然而,您的原始消息帮助我意识到我在索引和分析之间感到困惑,所以我将其标记为答案 – BonitoFlakes