今天试了试elasticsearch,实际上我认为es的基本功能就是一个存取服务,与redis、hbase不同的主要有两点:
- es具有很强大的搜索功能,可以模糊查询等,es会根据给定的句子进行搜索,并将搜索结果按照相似度大小排序返回。
- es官方提供了kibana,即一个es客户端,通过kibana可以执行es命令,还可以对es中的数据进行可视化分析。
1. es基本功能的使用
我使用的是es 7.10.2和kibana 7.10.2,启动es和kibana之后,在kibana中进行一些简单的实验:
# 先put几条数据,es中的结构有点像关系型数据库,可以理解为/数据库/表/数据主键,在es中这种结构被称为/索引/表/文档id
POST /ms/emp/1
{
"name":"wxw",
"wife":"md",
"salary":100000
}
POST /ms/emp/2
{
"name":"wxwmd",
"wife":"md",
"salary":50000
}
POST /ms/emp/3
{
"name":"md",
"husband":"wxw",
"salary":10000
}
POST /ms/emp/4
{
"name":"wll",
"salary":10000
}
POST /ms/emp/5
{
"name":"wjj",
"salary":50000
}
# 进行模糊查询,查询的field是name,查询的值是"wxwjj",查询结果与指定值之间的差距最大为2
GET /ms/emp/_search
{
"query": {
"fuzzy": {
"name": {
"value": "wxwjj",
"fuzziness": 2
}
}
}
}
查询结果为:
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : 0.8317766,
"hits" : [
{
"_index" : "ms",
"_type" : "emp",
"_id" : "2",
"_score" : 0.8317766,
"_source" : {
"name" : "wxwmd",
"wife" : "md",
"salary" : 50000
}
},
{
"_index" : "ms",
"_type" : "emp",
"_id" : "1",
"_score" : 0.46209806,
"_source" : {
"name" : "wxw",
"wife" : "md",
"salary" : 100000
}
},
{
"_index" : "ms",
"_type" : "emp",
"_id" : "5",
"_score" : 0.46209806,
"_source" : {
"name" : "wjj",
"salary" : 50000
}
}
]
}
}
2. kibana数据分析初步使用
刚开始要让你指定要对哪个索引的数据进行可视化,写上你想要的索引的名字就好,我这里是ms。
这里翻译为词,英文是term,实际上我认为翻译为“域”会更好,就是指定你要以那个域来划分这个饼图,我想看工资的分布情况,所以我要选salary
选择完更新,就可以看到工资的分布情况了: