1

我的索引可以说我有名为“full_name”的字段字段。我正在做以下查询:

{
"query":{
    "bool":{
        "must":[
            {
                "wildcard":{
                    "full_name":"ab*"
                }
            }
        ]
    }
},
"size":50
}

它返回完全适合的值,例如:

"full_name" : "abrakadabra"

但我也收到这样的东西:

"full_name" : "kad abra"

Wildacrd "ab*" 适合单词 "abra" ,因此我有 "full_name" : "kad abra" 。我怎样才能避免它,只搜索第一个单词前缀?

4

1 回答 1

3

默认情况下应用于字符串的标准分析器为每个单词生成一个术语。因此,“kad abra”被索引为两个术语“kad”和“abra”,您的查询会找到第二个术语。如果您想始终将 full_name 搜索为短语,则应使用带有关键字标记器和小写过滤器的自定义分析器对其进行索引。或者,如果大小写在您的术语中有意义,您可以将此字段索引为 not_analyzed。

于 2012-04-04T13:57:44.933 回答