2016-11-16 57 views
0

我有索引的ElasticSearch具有以下结构的文档的列表时产生错误的结果ElasticSearch使用条款

{ 
    "product_id": "xx", 
    "product_desc":"some product desc" 
} 

当我执行与项的搜索,如下,我得到正确的结果:

GET my_index/my_doctype/_search 
{"query": 
{ 
    "match":{"product_id": "138156"} 
    } 
} 

然而,当我执行的条款相同的搜索,我得到一个错误的结果

GET my_index/my_doctype/_search 
{ 
      "query": { 
      "terms": { 
       "product_id": ["138156"] 
     } 
    } 
} 

这发生在一些产品上,而不是全部。任何想法如何解决这个问题?

+0

“product_id”字段是如何编制索引的?它是什么数据类型,是否被分析? –

+0

@RyanWalker谢谢你的回复!它是字符串类型,没有指定分析器,所以我假定使用默认分析器。 – MedAli

回答

1

对于术语查询在字符串字段上正常工作,该字段必须是未分析的。请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html

+0

谢谢!我无法在链接的任何位置看到“未分析”的要求。无论如何,我会尝试。是否有可能将字段更改为不分析而不必重新分配? – MedAli

+0

我认为这是指向文档的错误链接。正确的是:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html – MedAli

+0

不,你必须重新索引。如果您需要分析和未分析的版本,请查看Multifields! –