软件环境:docker、es7.6.1、kibana7.6.1
1、软件安装
1、安装es。
下载es镜像
新建es文件夹,并创建config、data、plugins3个映射子文件夹。
编写docker-compose.yml文件
启动容器
网页访问:http://47.10.11.41:9200/
docker pull elasticsearch:7.6.1
docker-compose.yml文件内容:
version: '3'
services:
elasticsearch:
container_name: es
image: elasticsearch:7.6.1
ports:
- 9200:9200
- 9300:9300
restart: always
network_mode: "host"
privileged: true
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms256m -Xmx256m
volumes:
- /data/docker/elasticsearch/config:/usr/share/elasticsearch/config
- /data/docker/elasticsearch/data:/usr/share/elasticsearch/data
- /data/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
docker-compose up -d
2、安装kibana
下载kibana镜像
新建kibana文件夹,并创建config子文件夹,在config文件夹中,新建kibana.yml文件
编写docker-compose.yml文件
启动容器
网页访问:http://47.10.11.41:5601/
docker pull kibana:7.6.1
kibana.yml文件内容(注意修改es的ip和端口):
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://47.10.11.41:9200" ]
docker-compose.yml文件内容:
version: '3'
services:
kibana:
container_name: kibana
image: kibana:7.6.1
ports:
- "5601:5601"
restart: 'always'
volumes:
- /data/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
environment:
- ELASTICSEARCH_HOSTS=http://47.10.11.41:9200
docker-compose up -d
3、安装 IK 分词器
下载IK zip安装包:https://github.com/medcl/elasticsearch-analysis-ik/releases
将zip解压到 es 的plugins文件夹下,修改config/IKAnalyzer.cfg.xml, 可以增加自定义的分词器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">geovis.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
重启 es 服务即可
2、kibana调用es的rest接口
1、索引接口
# 创建索引
PUT test1
{
"settings": {
"index":{
"number_of_shards":5,
"number_of_replicas":1
}
}
}
# 查看索引
GET test1/_settings
# 删除索引
DELETE test1
2、文档接口
# 增加文档
POST test1/_doc/1
{
"name": "aaa",
"age": 10
}
# 查询文档
GET test1/_doc/1
# 修改文档(如果只填写部分属性,PUT会删除其他属性,而POST只会修改相应的属性,其他属性不动)
PUT test1/_doc/1
{
"name": "bbb"
}
POST test1/_update/1
{
"doc": {
"name": "ccc"
}
}
# 删除文档
DELETE test1/_doc/1
3、分词器接口
# 智能分词,不会重复
POST test2/_analyze
{
"analyzer": "ik_smart",
"text": "中科星图有限公司,简称geovis,位于陕西省西安市"
}
# 最细粒度的分词
POST test2/_analyze
{
"analyzer": "ik_max_word",
"text": "中科星图有限公司,简称geovis,位于陕西省西安市"
}
4、多条件查询、过滤、排序、分页、高亮
# term: 直接精确匹配
# match: 会使用分词器解析(先分析文档,然后再通过分析的文档进行查询)
# keyword 类型的字段不会被分词器解析
# 查询、分页、排序、高亮、过滤 (不指定排序字段时,默认按照_score匹配度排序)
GET test1/_search
{
"query": {
"match": {
"name": "java入门"
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
],
"highlight": {
"pre_tags": "<p style='color:#ff0000' class='key'>",
"post_tags": "</p>",
"fields": {
"name": {}
}
},
"from": 0,
"size": 10
}
# must: 多条件查询,相当于sql中的 and
GET test1/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "java入门"
}
},
{
"match": {
"age": 25
}
}
]
}
}
}
# must+filter: 多条件查询,相当于sql中的 and 和 between
GET test1/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "java入门"
}
},
{
"match": {
"age": 25
}
}
],
"filter": {
"range": {
"age": {
"gte": 20,
"lte": 30
}
}
}
}
}
}
# must_not: 多条件查询,相当于sql中的 not
GET test1/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"age": 25
}
}
]
}
}
}
# should: 多条件查询,相当于sql中的 or
GET test1/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "java入门"
}
},
{
"match": {
"age": 25
}
}
]
}
}
}
网友评论