Elasticsearch不会返回结果

时间:2013-10-23 13:16:51

标签: elasticsearch

我在弹性搜索查询中面临一个奇怪的问题。我对弹性搜索知之甚少。我的疑问是:

    {
      "query":
      {
        "bool":
        {
          "must":
            [
              {
                 "text":
                 {
                   "countryCode2":"DE"
                 }
              }
            ],
          "must_not":[],
          "should":[]
        }
    },"from":0,"size":1,"sort":[],"facets":{}
  }

问题在于“DE”。它给了我结果但是对于“BE”或“IN”它返回空结果。

1 个答案:

答案 0 :(得分:4)

您正在使用默认映射进行索引,默认映射会删除英语停用词。国家/地区代码“IN”,“BE”以及更多内容甚至没有被编入索引的停用词,因此无法获得匹配的文档,也不可能在该字段上进行分区时取回这些国家/地区代码。

解决方案是在为国家/地区代码字段提交自己的映射后重新编制索引:

{
    "your_type_name" : {
        "country" : {
            "type" : "string", "index" : "not_analyzed"
        }
    }
}

如果您已尝试执行此操作但未更改,则映射无法正确提交。我建议仔细检查它的json结构是否正确,并且你可以使用get mapping api实际获得它。

由于这是一个常见问题,因此默认情况可能会在未来发生变化,以减少干扰并避免应用任何与语言相关的文本分析。