Elasticsearch Completion Suggester中的数组输入

时间:2014-08-13 13:15:34

标签: elasticsearch

我想弄清楚为什么ES中的场景对我来说似乎不起作用。我有一个非常简单的建议映射设置:

{
  "ding" : {
     "properties" : {
        "name" : { "type" : "string" },
        "title" : { "type" : "string" },
        "test" : { "type" : "string" },
        "suggest": {
            "type": "completion",
            "analyzer": "simple",
            "payloads": true,
            "max_input_length": 50
            }

        }
     }
}

并将文件编入索引:

{
   "title": "Title",
   "name": "Name",
   "test": "Test",
   "suggest": {
      "input": [
         "Koolmees 21, Breda",
         "4822PP 21"
      ]
   }
}

完成建议可以正常使用:

{
    "ding" : {
      "text" : "Koo",
        "completion" : {
            "field" : "suggest"
        }
    }
}

但不是:

{
    "ding" : {
      "text" : "482",
        "completion" : {
            "field" : "suggest"
        }
    }
}

是因为输入以数字字符开头吗?我似乎无法弄明白:S

1 个答案:

答案 0 :(得分:2)

完成建议器默认使用simple分析器。如果您使用Analyze API,则可以看到它删除了数字:

curl -XGET 'localhost:9200/_analyze?analyzer=simple&pretty=true' -d '4822PP 21'

返回

{
    "tokens" : [ {
        "token" : "pp",
        "start_offset" : 4,
        "end_offset" : 6,
        "type" : "word",
        "position" : 1
   } ]

}

您可能希望切换自动完成功能以使用Standard分析器。