你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
POST test_index/test_type/122 { "txt":"123*456" } POST test_index/test_type/_search { "query":{ "wildcard":{ "txt.keyword":"123*456" } } } POST test_index/test_type/_search { "query":{ "term":{ "txt.keyword":"123*456" } } }
bill
要回复问题请先登录或注册
2 个回复
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
你的问题原因是不是没有加.keyword。
还有wildcard是模糊匹配,中间字符不论什么,完全可以用*代替的。你的*也不例外
bill
赞同来自:
应该是分词的原因。索引域要定义成not_analyzed才可以。否则*是无法索引到一个文档里,因为标准分词器会把*,\这些特殊字符过滤。除非你定义了自己的分词器。
PUT idx_001
PUT idx_001/_mapping/docs
{
"properties" : {
"name" : { "type" : "string",
"index" : "not_analyzed"
}
}
}
PUT idx_001/docs/1?pretty -d
{
"name" : "123456"
}
PUT idx_001/docs/2?pretty -d
{
"name" : "123*456"
}
GET idx_001/docs/1
GET idx_001/docs/2
只搜到文档2
GET idx_001/_search?pretty -d
{
"query" : {
"wildcard" : {
"name" : "123\\*456"
}
}
}
搜到文档1和2
GET idx_001/_search?pretty -d
{
"query" : {
"wildcard" : {
"name" : "123*456"
}
}
}
搜到文档1和2
GET idx_001/_search?pretty -d
{
"query" : {
"wildcard" : {
"name" : "123?456"
}
}
}