【问题标题】:Elasticsearch - how to search exact string match with special charater (-) in the json documentElasticsearch - 如何在json文档中搜索具有特殊字符(-)的精确字符串匹配
【发布时间】:2018-09-28 10:47:42
【问题描述】:

我一直在使用 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 * 结果。如何将精确字符串与特殊字符串匹配。

【问题讨论】:

  • 为什么投反对票?

标签: elasticsearch elasticsearch-5


【解决方案1】:

您可以使用匹配确切术语的Term Query。假设 company 是一个 text 字段,你会得到一个相同的 keyword 版本,下面的查询应该是必要的

{

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

【讨论】:

    【解决方案2】:

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

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

    2/ 或者您可以查询 company.keyword,这是自 5.X 以来为文本字段自动创建的字段。此关键字未进行分析,您可以安全地对其使用术语查询进行精确匹配。

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 2019-09-03
      • 2021-10-11
      相关资源
      最近更新 更多