Elasticsearch-如何在JSON文档中搜索与特殊字符(-)完全匹配的字符串

时间:2018-09-28 10:47:43

标签: elasticsearch elasticsearch-5

我一直在使用ES 5.x版本,这是我的示例数据集json。

{"id":"1"}
{.... "company" : "HCL-US",....}
{"id":"2"}
{.... "company" : "HCL",....}
{"id":"3"}
{.... "company" : "HCL-IND",....}
{"id":"4"}
{.... "company" : "HCL-AUS",....}

我如何搜索和获取属于“ HCL-US”的人。我尝试使用此查询“ _search?q = company:” HCL-US“”,它返回的是HCL *结果。如何将确切的字符串与特殊字符串匹配。

2 个答案:

答案 0 :(得分:1)

1 /您可以在映射company中指定whitespace analyzer。该分析器仅在空白处拆分查询,而标准将在非字母数字字符处拆分查询。

标准分析仪是未定义分析仪时使用的分析仪。

2 /或者您可以在company.keyword上查询,该字段是自5.X开始为文本字段自动创建的字段。此关键字没有经过分析,您可以放心使用术语查询来进行完全匹配。

答案 1 :(得分:1)

您可以使用与确切术语匹配的Term Query。假设company是一个text字段,您将获得相同版本的keyword,下面的查询应该可以完成

{

 "query": {
  "term": {
    "company.keyword": {
    "value": "HCL-US"
    }
  }
 }
}