在模糊Query-Elasticsearch中搜索返回不同的值

时间:2017-06-13 08:54:27

标签: elasticsearch lucene kibana

我有一个Elasticsearch模糊查询如下:

Use of undefined constant i - assumed 'i'

我的索引中有Tom,Roy,Maxwell的名字。汤姆的名称根据请求进行匹配,但名称Roy也会被退回。这是怎么回事? 全名是:

Roy M Lovejoy III

Tom Atwell

另外,如果我将模糊性设置为1,我没有得到任何结果。汤姆不应该匹配,因为只有1个字符不同吗?

映射:

GET /resume/candidate/_search
{
    "query": {
       "fuzzy" : {  "name" : {
                    "value": "Tam",
                    "fuzziness" :     2,
                    "max_expansions": 50 }
    }
}
}

我也有一个分析器,但它没有在名称字段中使用

分析仪:

{
  "resume": {
    "aliases": {},
    "mappings": {
      "candidate": {
        "properties": {
          "name": {
            "type": "text"
          }
    }
}
}
}

1 个答案:

答案 0 :(得分:2)

“Tam”与“roy”不是模糊匹配,它与中间的初始“m”匹配,编辑距离为2.

你没有在编辑距离为1的“tom”上得到结果的原因是因为,当您的索引名称被分析,因此小写时,您的查询不是。您可以小写查询,也可以使用fuzzy match query进行分析:

"query": {
  "match": {
    "name": {
      "query":     "Tam",
      "fuzziness": "AUTO"
    }
  }
}