安装IK,参考ELK那一篇 文章,然后重启ES,发现有插件加载即可
1添加索引
put方法提交
127.0.0.1:9200/heiniao5
2、修改默认索引映射
put方法提交
127.0.0.1:9200/heiniao5/_mapping
{
"properties": {
"ProductDes": {
"type": "text"
},
"ProductName": {
"type": "keyword"
},
"ProductType": {
"type": "long"
},
"productPrice": {
"type": "long"
}
}
}
3、添加数据
4、
{
"query": {
"match":{
"ProductDes":"南京"
}
}
}
=-----------------
出结果,南京的萝卜和南京的电脑
5、如果 上面搜索“电” 还是有结果。这是南京 的电脑的结果。为了结果更准确。ProductDes里面 ik_smart分词效果。
{
"properties": {
"ProductDes": {
"type": "text",
"analyzer":"ik_smart"
},
"ProductName": {
"type": "keyword"
},
"ProductType": {
"type": "byte"
},
"productPrice": {
"type": "double"
}
}
}
再次添加数据,再次搜索,就发现描述 ProductDsc 里面已经精确分词了,电搜索不出来了。因为和其他的电脑已经组合了
原理:
get方法请求
127.0.0.1:9200/heiniao55/_analyze
{
"analyzer": "ik_smart",
"text": "这是南京的电脑"
}
这是 南京 的 电脑
没有电。故ok
post方法
127.0.0.1:9200/heiniao55/_search
{
"query": {
"match":{
"ProductDes":"这是南京的电脑"
}
}
}
先ik_smart 出來一個 的 ,所以再搜索结果全部出来了。
如果想再精确
{
"query": {
"match_phrase":{
"ProductDes":"这是南京的电脑"
}
}
}