中文分词+全文搜索
本文假设你已经搭建好elasticsearch服务器,并在上面装了kibana和IK中文分词组件
elasticsearch+kibana+ik的安装,之前的文章有介绍,可参考。
mapping介绍:定义索引(index)类型(type)的元数据,包括:数据类型、分词行为、建立倒排索引行为、搜索行为等。在搜索的时候会根据这个mapping定义的分词行为、搜索行为进行搜索。
1、创建索引
1 PUT news
2、创建mapping
1 POST news/new/_mapping 2 { 3 "new": 4 { 5 "properties": 6 { 7 "title": 8 { 9 "type": "text", 10 "fields": { 11 "keyword": 12 { 13 "type": "keyword", 14 "ignore_above": 256 15 } 16 } 17 }, 18 "content": 19 { 20 "type": "text", 21 "analyzer": "ik_max_word", 22 "search_analyzer": "ik_max_word" 23 } 24 } 25 } 26 }
有两个字段:title和content
3、插入数据
1 PUT news/new/1 2 { 3 "title":"印度将因4大矛盾惨败中国 1项曾使印度国母被杀", 4 "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 5 }
1 PUT news/new/2 2 { 3 "title":"印度不要敬酒不吃吃罚酒满嘴跑火车 想想1962年", 4 "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 5 }
1 PUT news/new/3 2 { 3 "title":"莫迪就中印对峙发声:靠“亚洲古老传统”解决问题", 4 "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 5 }
4、全文检索+高亮显示
全文检索:
1 GET news/new/_search 2 { 3 "query" : 4 { 5 "match" : 6 { 7 "content" : "中国 印度 " 8 } 9 } 10 }
高亮显示
1 GET news/new/_search 2 { 3 "query" : 4 { 5 "match" : 6 { 7 "content" : "中国 印度 " 8 } 9 } 10 , 11 "highlight": 12 { 13 "pre_tags" : ["<tag1>", "<tag2>"], 14 "post_tags" : ["</tag1>", "</tag2>"], 15 "fields" : { 16 "content" : {} 17 } 18 } 19 }
elasticsearc实例讲解增删改查
https://www.cnblogs.com/subendong/p/7295549.html
1、首先弄明白四个概念
elasticsearch | 关系型数据库 |
index | 数据库 |
type | 表 |
document | 行 |
field | 字段 |
如果刚一开始理解比较困难,那你就在心中默念100遍,10遍也可以。。。
如果你做过面向对象开发,我觉得elasticsearch的这四个概念还是很好理解的。
需要重点说明的是document就是一个json格式的字符串,里面包括N个字段。我们可以想象将面向对象语言里面的一个对象序列化成json字符串。
关系型数据库需要先建库,再建表。elasticsearch不需要,在你新增的时候会根据你指定的index,type,document,field自动创建。当然先创建索引也是可以的。
好文学习自:https://www.cnblogs.com/subendong/p/7308647.html
下载及环境安装
https://www.elastic.co/cn/downloads/elasticsearch