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>"]
}
}