弹性搜索中的特殊字符" - "

Dee*_*ena 5 elasticsearch

" - "就像是一个或运算符,例如我正在搜索"t-link",然后它显示的结果包含"t-link"以及"t",为什么它给出了两个术语,但我感兴趣的是"t-link",为什么会发生这种情况?我怎样才能从中恢复过来?

dad*_*net 8

Elasticsearch默认使用标准的字符串分析器.

基本上,你的字符串被标记为两个标记,小写:

  • Ť
  • 链接

如果您需要知道elasticsearch与您的字段有什么关系,请使用_analyze API.

$ curl -XGET 'localhost:9200/_analyze?analyzer=standard' -d 't-link'
$ curl -XGET 'localhost:9200/_analyze?analyzer=simple' -d 't-link'
Run Code Online (Sandbox Code Playgroud)

如果您不想这样做,请确保为该字段设置正确的映射,并根据您的要求使用简单的分析器关键字分析器或根本不使用分析器.另请参见字符串核心类型.

$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '
{
    "tweet" : {
        "properties" : {
            "message" : {"type" : "string", "analyzer" : "simple"},
            "other" : {"type" : "string", "index" : "not_analyzed"}
        }
    }
}
'
Run Code Online (Sandbox Code Playgroud)

使用此表单message字段将使用simple分析器进行分析,并且other根本不会分析字段.