例如,我需要搜索一个值 100%
,我有文档,例如,文本 "100% guarantee"
相反,它是根据 100%
,也就是说,在hits中只突出显示数字(10010021000-500500-100….)
查询:
GET _search
{
"query": {
"multi_match": {
"query": "100%",
"type": "phrase_prefix",
"fields": ["title", "body"]
}
},
"size": 5
}
我试着:
GET _search
{
"query": {
"query_string": {
"default_field": "body",
"query": "100%",
"allow_leading_wildcard": false
}
},
"size": 5,
"highlight": {
"fields": {
"body": {
"type": "plain",
"fragment_size": 20,
"pre_tags": "<span class='bold'>",
"post_tags": "</span>",
"number_of_fragments": 1
}
}
}
}
第一个突出显示示例:
"highlight" : {
"body" : [
"-<span class='bold'>100</span> - you number"
]
}
1条答案
按热度按时间vlf7wbxs1#
在突出显示的查询中,只突出显示数字而不突出显示特殊字符,这是因为
standard
分析仪。因为,您还没有为您的title
字段,因此标准分析器是默认分析器,如果未指定,则使用该分析器。生成以下令牌:
您可以看到elasticsearch的标准分析器只是去掉了“%”字符。分析器是在索引时应用的,因此您的文本永远不会按您的需要进入索引。
添加索引数据、Map、搜索查询和搜索结果的工作示例
索引Map:
分析api:
生成以下令牌:
索引数据:
搜索查询:
搜索结果: