作用
用于部署全文搜索服务器,内核由Lucene编写,用于解决大数据量的全文搜索和
实例
-
修改config下elasticsearch.yml
ps:启动有可能失败,由于ES消耗服务器资源较大,需要调整硬件容量限制 -
集成IK分词器
原有的分词器对中文字符不太友好
在/usr/local/server/es(ik分词器包路径),解压包
unzip elasticsearch-analysis-ik-5.6.8.zip -d ./ik(-d表示当前目录directive,.表示当前目录)
mv elasticsearch ik (目录一致就是改名,目录不一致才是移动)
- 将解压好的IK分词器拷贝到elasticsearch的plungins中
这里是拷贝到docker容器中(docker cp ik elasticsearch:/usr/share/elasticsearch/plungins)
IK分词器
自定义分词
修改IKAnalyzer.cfg.xml配置文件,添加自定义分词文件
自定义停用分词
修改IKAnalyzer.cfg.xml配置文件,添加停用词汇文件
Kibana
作用
跟ES进行协作操作的数据分析工具,实现对日志的实时分析和对es数据的交互,elasticsearch-head功能单一所以不使用
DSL
#查询所有索引库
GET _cat/indices?v
#删除索引库,userinfo为索引库名,ps:语句不能加分号;
DELETE /userinfo
#新增索引库
PUT /user
#创建映射(user为索引库名(数据库名),userinfo为类型名(数据库表),_mapping表示映射)
PUT /user/userinfo/_mapping
{
"properties": {
"name":{
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
"store": false
},
"city":{
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
"store": false
},
"age":{
"type": "long",
"store": false
},
"description":{
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
"store": false
}
}
}
#新增文档记录
PUT /user/userinfo/1
{
"name":"li si",
"age": 20,
"city": "shenzhen",
"description":"something testing"
}
#根据ID查询
GET /user/userinfo/1
#修改数据(修改会删除原始数据,相当于覆盖)
PUT /user/userinfo/1
{
"name":"wang wu"
}
#更新数据正确打开方式
POST /user/userinfo/1/_update
{
"doc": {
"name": "wang wu"
}
}
#删除数据
DELETE /user/userinfo/1
#查询user索引库所有数据
GET /user/_search
#根据Age降序查询
GET /user/userinfo/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
#分页查询
GET /user/userinfo/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "desc"
}
}
],
"from": 0,
"size": 10
}
#词项搜索
GET /user/userinfo/_search
{
"query": {
"term": {
"age": {
"value": "20"
}
}
}
}
#多个值搜索
GET /user/userinfo/_search
{
"query": {
"terms": {
"age":
[
20
]
}
}
}
#范围过滤(gt大于lt小于e等于)
GET /user/userinfo/_search
{
"query": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
#查询存在city域的数据
GET /user/userinfo/_search
{
"query": {
"exists":{
"field": "city"
}
}
}
#搜索年龄在10~20的,并且在深圳的用户
GET /user/userinfo/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": {
"value": "shenzhen"
}
}
},
{
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
]
}
}
}
#根据分词查询字符匹配
GET /user/userinfo/_search
{
"query": {
"match": {
"city": "shenzhen"
}
}
}
#前缀查询
GET /user/userinfo/_search
{
"query": {
"prefix": {
"name": {
"value": "wang"
}
}
}
}
#多个域匹配搜索
GET /user/userinfo/_search
{
"query": {
"multi_match": {
"query": "s",
"fields": [
"city",
"description"
]
}
}
}```