ElasticSearch(二)在线Kibana操作
使用Kibana可视化工具实现对ElasticSearch的使用:
-
创建一个没有结构的索引
PUT /student/
-
为原有的空结构索引添加结构
PUT /student/_mapping { "properties": { "id":{ "type": "integer" }, "name":{ "type": "text" }, "desc":{ "type": "text" } } }
-
创建一个有结构的索引
PUT /student { "mappings": { "properties": { "id":{ "type": "integer" }, "name":{ "type": "text" }, "desc":{ "type": "text" } } } }
-
删除索引
DELETE /student
-
新增文档 / 更新文档(对已存在的文档添加就是更新)
添加新的文档逻辑 POST /student/_doc/1 { "id":1, "name":"美羊羊", "desc":"美羊羊喜欢喜羊羊" } POST /student/_doc/2 { "id":2, "name":"喜羊羊", "desc":"喜羊羊喜欢蓝色的铃铛" }
修改存在文档的逻辑 POST /student/_doc/1 { "id":1, "name":"美羊羊", "desc":"美羊羊喜欢喜羊羊,美羊羊不喜欢沸羊羊" }
-
查询所有的文档
GET /student/_search { "query": { "match_all": {} } }
-
根据文档ID查询文档数据
GET /student/_doc/1
-
根据文档ID删除文档信息
DELETE /student/_doc/1
-
根据文档ID批量查询文档信息
GET /student/_mget { "docs":[ {"_id":1}, {"_id":2} ] }
-
修改文档部分字段(避免出现对所有的字段都需要进行修改的改动)
POST /student/_doc/1/_update { "doc":{ "desc":"美羊羊喜欢喜羊羊,美羊羊不喜欢沸羊羊,绿茶女" } }
-
分词器的操作
在ElasticSearch中的分词器主要分为四种:
- 默认的分词器:standard analyzer
- ik分词器:analysis-ik
- 拼音分词器:analysis-pinyin
- 自定义分词器
分词器的安装方法很简单,就是按照ElasticSearch的版本找到对应版本的分词器,将其解压到es中的plugins问价夹中。
将其各自解压到对应的自己创建的文件夹中。
- 默认分词器的使用
GET /_analyze { "text": "我是一个中国人", "analyzer": "standard analyzer" }分词的结果是:一字一词。
- ik分词器的使用
GET /_analyze { "text": "我是一个中国人", "analyzer": "ik_smart" }
GET /_analyze { "text": "我是一个中国人", "analyzer": "ik_max_word" }
- 拼音分词器
GET /_analyze { "text": "我是一个中国人", "analyzer": "pinyin" }
既然学习了分词器的使用,那么对其文档的搜索操作可以进一步的测试
-
创建索引
PUT /students { "mappings": { "properties": { "id":{ "type": "integer", "index": true }, "name":{ "type": "text", "store": true, "index": true, "analyzer": "ik_smart" }, "info":{ "type": "text", "store": true, "index": true, "analyzer": "ik_smart" } } } }
-
添加文档数据
POST /students/_doc/1 { "id":1, "name":"百战程序员", "info":"I love baizhan" } POST /students/_doc/2 { "id":2, "name":"美羊羊", "info":"美羊羊是羊村最漂亮的人" } POST /students/_doc/3 { "id":3, "name":"懒羊羊", "info":"懒羊羊的成绩不是很好" } POST /students/_doc/4 { "id":4, "name":"小灰灰", "info":"小灰灰的年纪比较小" } POST /students/_doc/5 { "id":5, "name":"沸羊羊", "info":"沸羊羊喜欢美羊羊" } POST /students/_doc/6 { "id":6, "name":"灰太狼", "info":"灰太狼是小灰灰的父亲,每次都会说我一定会回来的" }
-
查询所有的文档信息
GET /students/_search { "query": { "match_all": {} } }
-
文档搜索-根据域条件进行匹配
GET /students/_search { "query": { "match": { "info": "美羊羊" } } }
-
文档查询-范围查询
GET /students/_search { "query": { "range": { "id": { "gte": 1, "lte": 3 } } } }
-
文档查询-短语检索
GET /students/_search { "query": { "match_phrase": { "info": "美羊羊" } } }
-
文档查询-单词 / 词组搜索
GET /students/_search { "query": { "term": { "info": { "value": "美" } } } }
-
文档搜索-结果排序
GET /students/_search { "query": { "match_all": {} }, "sort": [ { "id": { "order": "desc" } } ] }
-
文档搜索-分页查询
GET /students/_search { "query": { "match_phrase": { "info": "美羊羊" } }, "from": 0, "size": 2 }
-
文档搜索-高亮查询
GET /students/_search { "query": { "match_phrase": { "info": "美羊羊" } }, "highlight": { "fields": { "info": { "fragment_size": 20, "number_of_fragments": 5 } }, "pre_tags": ["<em style='color:red;'>"], "post_tags": ["</em>"] } }