systemctl status firewalld.service
# 建立一些必要的文件夹,挂载到容器
mkdir -p /data/elasticsearch/config
mkdir -p /data/elasticsearch/data
mkdir -p /data/elasticsearch/plugins
# chmod 777 -R /data/elasticsearch
chmod 777 /data/elasticsearch/*
# 写入配置
echo "http.host: 0.0.0.0" >> /data/elasticsearch/config/elasticsearch.yml
# 创建容器,7.10.1即可,内存不需要给太大,服务太多虚拟机带不起来了
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms128m -Xmx256m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.10.1
docker run -d --name kibana -e ELASTICSEARCH_HOSTS="http://192.168.109.128:9200" -p 5601:5601 kibana:7.10.1




PUT 新建数据 _doc,暂时先不用深究
result 指明数据已创建
_version 和 _seq_no 的介绍id, _version 一直是 1,但同一 index 里, _seq_no 一直在递增
_version 在变, _seq_no 当然也是增加的
_create


_update 配合 doc
_doc


doc,或 docs
_,比如指明索引 _index,指明 id _id;POST 不用下划线query match 中
from 和 size 做分页查询,但这类似于 MySQL 的 limit




match_phrase

^2
AND,相当于 match_phrase
OR,类似 multi_match,但是会匹配所有 filed
default_field 指定要查询的字段,类似 match
match_all
GET _search
{"query": {"match_all": {}}
}
query match 的常用查询方式,属于 Query-DSL,当然,DSL 还包含很多其他查询方式

query term 的方式,属于 Query-DSL
gte 表示大于等于exists,查询有某个字段的数据



must: 必须匹配,查询上下⽂,加分,也属于过滤(必须要有),但是影响分数,这要看里面具体条件怎么写了,如果用match这种匹配词组的,分数会不一样
should: 应该匹配,查询上下⽂,加分(附加分)
must_not: 必须不匹配,过滤上下⽂,过滤,不影响分数
filter: 必须匹配,过滤上下⽂,过滤,不影响分数



keyword
{"address":{"keyword":"Madison Street" // keyword 类型"value":"Madison Street" // text 类型}
}







settings 指定 index 的 analyzerKeyword AnalyzerStandard Analyzer// 写个例子
PUT usertest
{"mappings": {"properties": {"age":{"type": "text","analyzer": "standard"}}}
}
settings 还没有介绍
[root@12e0e2f9920d bin]# elasticsearch-plugin list
ik
chmod 777 -R ik/docker restart elasticsearchik_smart
ik_max_word,将所有可能的词都列出来

PUT cn
{"mappings": {"properties": {"name": {"type":"text","analyzer":"ik_smart","search_analyzer": "ik_smart"}}}
}


GET _analyze 能看到分词情况,match 是看不到的,只能显示匹配到的结果,也就是我们 POST 进去的数据,但通过 match 中传入不同的查询字符串都能得到这个结果就可以证明分词是起效的eq 时也就无法匹配上