环境

  • Elasticsearch 2.3.5
  • Elasticsearch-ik-plugin

实现

  • 搜索建议的对象

    假设有以下两个json对象,需要对其中tags字段进行搜索建议:
//对象Product1
{
"title": "Product1",
"description": "Product1 Description",
"tags": [
"山东",
"山东高新开发区",
"山东大学",
"two columns",
"wordpress"
]
} //对象Product2
{
"title": "Product2",
"description": "Product2 Description",
"tags": [
"山东省",
"山东公安局",
"山东检察院",
"skrill",
"wordland"
]
}
  • 设置索引mapping

    建立索引suggester_ik_test和mapping,如下:

    注意使用的suggester类型为completion
curl -XPUT "http://10.110.13.57:9200/suggester_ik_test?pretty" -d'
{
"mappings": {
"product": {
"properties": {
"description": {
"type": "string"
},
"tags": {
"type": "string"
},
"title": {
"type": "string"
},
"tag_suggest": {
"type": "completion",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"payloads": false
}
}
}
}
}'
  • 索引数据

    根据上述索引和mapping对json数据建立索引:
//Product1
curl -XPUT "http://10.110.13.57:9200/suggester_ik_test/product/1?pretty" -d'
{
"title": "Product1",
"description": "Product1 Description",
"tags": [
"山东",
"山东高新开发区",
"山东大学",
"two columns",
"wordpress"
],
"tag_suggest": {
"input": [
"山东",
"山东高新开发区",
"山东大学",
"two columns",
"wordpress"
]
}
}' //Product2
curl -XPUT "http://10.110.13.57:9200/suggester_ik_test/product/2?pretty" -d'
{
"title": "Product2",
"description": "Product2 Description",
"tags": [
"山东省",
"山东公安局",
"山东检察院",
"skrill",
"wordland"
],
"tag_suggest": {
"input": [
"山东省",
"山东公安局",
"山东检察院",
"skrill",
"wordland"
]
}
}'
  • 测试

    搜索“山东”,查看是否有搜索建议提示生效:
curl -XPOST "http://10.110.13.57:9200/suggester_ik_test/_suggest?pretty" -d'
{
"product_suggest":{
"text":"山东",
"completion": {
"field" : "tag_suggest"
}
}
}' //应该得到以下数据
{
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"product_suggest" : [ {
"text" : "山东",
"offset" : 0,
"length" : 2,
"options" : [ {
"text" : "山东",
"score" : 1.0
}, {
"text" : "山东公安局",
"score" : 1.0
}, {
"text" : "山东大学",
"score" : 1.0
}, {
"text" : "山东检察院",
"score" : 1.0
}, {
"text" : "山东省",
"score" : 1.0
} ]
} ]
}

参考资料

Quick and Dirty Autocomplete with Elasticsearch Completion Suggest

最新文章

  1. 用CSS实现居中的方式
  2. caffe安装(linux)
  3. JTAG
  4. nginx服务器在IE下载时,apk,ipa文件变成zip的解决方法
  5. SVN是什么,svn的目录结构
  6. log4net面面观之Repository
  7. 3 weekend110的shuffle机制 + mr程序的组件全貌
  8. WIN10 + VS2015 + WDK10 + SDK10 + VM虚拟机驱动开发调试环境搭建
  9. cURL模拟POST方式提交数据
  10. 常用上网增强类Chrome扩展(转)
  11. 企业微信开发之向员工付款(C#)
  12. jspf与jsp的区别
  13. vivado License导入方法与资源获取
  14. Linux Mint chrome浏览器提示“需要安装adobe flash player”
  15. 收藏了8年的PHP优秀资源,都给你整理好了
  16. Golang Go Go Go part1:安装及运行
  17. Unicode编码范围
  18. 使用session和cookie实现用户登录:一个登录页面,一个servlet,一个登录成功页面
  19. 干货!一篇文章集合所有Linux基础命令
  20. IDEA新建项目时,没有Spring Initializr选项

热门文章

  1. bzoj 4059:Non-boring sequences 分治
  2. shell for的用法
  3. Linux下系统监控工具nmon使用
  4. 学习动态性能表(11)v$latch$v$latch_children
  5. Windbg内核调试之四: Dump文件分析
  6. JSF中使用f:ajax标签无刷新页面改变数据
  7. java中实现多线程的方法有几种以及如何实现多线程
  8. windows下python访问ipv6报错
  9. 生产环境该如何选择lvs的工作模式,和哪一种算法
  10. leetcode874