elasticsearch
一、安装
安装es
docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" --network es -p 9200:9200 -p 9300:9300 elasticsearch:7.17.1
安装kibana
docker run -d --name kn --network es -e "ELASTICSEARCH_HOSTS=http://es:9200" -p 5601:5601 kibana:7.17.1
安装es-head
docker run -d --name es-head --network es -p 9100:9100 mobz/elasticsearch-head:5-alpine
配置
es
跨域问题
文件位置:/usr/share/elasticsearch/config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
关闭安全提示
xpack.security.enabled: false
安装ik分词器
github下载es对应版本的ik分词器,解压至"/usr/share/elasticsearch/plugins/ik"目录 重启es
kibana
设置中文
文件位置:/usr/share/kibana/config/kibana.yml
i18n.locale: "zh-CN"
二、API
添加索引
创建索引
PUT /索引名
添加文档
添加ID为1的文档,索引不存在会自动创建
PUT /vczs/_doc/1
{
"name": "John Doe"
}
不指定ID添加文档,索引不存在会自动创建
POST /vczs/_doc
{
"name": "kevin"
}
常规查询
最粗粒度的拆分
POST _analyze
{
"analyzer": "ik_smart",
"text": "我是蔡徐坤"
}
最细粒度的拆分
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是蔡徐坤"
}
查询所有文档、默认数量10
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
查询10条数据 从第10个开始
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
],
"from": 10,
"size": 10
}
查询address包含"mill"或"lane"的文档
GET /bank/_search
{
"query": { "match": { "address": "mill lane" } }
}
查询address包含"mill lane"的文档
GET /bank/_search
{
"query": { "match_phrase": { "address": "mill lane" } }
}
查询age等于40并且state不等于ID的文档
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
查询balance大于20000小于30000的
GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 30000,
"lte": 40000
}
}
}
}
},
}
聚合查询
按州进行分组、查询账户数量
GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword"
}
}
}
}
按州进行分组、查询账户数量 并且计算每个州平均账余额
GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword"
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}
按州进行分组、指定排序查询账户数量 并且计算每个州平均账余额
GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword",
"order": {
"average_balance": "desc"
}
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}