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 的 limitmatch_phrase
^2
AND
,相当于 match_phraseOR
,类似 multi_match,但是会匹配所有 fileddefault_field
指定要查询的字段,类似 matchmatch_all
GET _search
{"query": {"match_all": {}}
}
query match
的常用查询方式,属于 Query-DSL,当然,DSL 还包含很多其他查询方式query term
的方式,属于 Query-DSLgte
表示大于等于exists
,查询有某个字段的数据must: 必须匹配,查询上下⽂,加分,也属于过滤(必须要有),但是影响分数,这要看里面具体条件怎么写了,如果用match这种匹配词组的,分数会不一样
should: 应该匹配,查询上下⽂,加分(附加分)
must_not: 必须不匹配,过滤上下⽂,过滤,不影响分数
filter: 必须匹配,过滤上下⽂,过滤,不影响分数
keyword
{"address":{"keyword":"Madison Street" // keyword 类型"value":"Madison Street" // text 类型}
}
settings
指定 index 的 analyzerKeyword Analyzer
Standard Analyzer
// 写个例子
PUT usertest
{"mappings": {"properties": {"age":{"type": "text","analyzer": "standard"}}}
}
settings
还没有介绍[root@12e0e2f9920d bin]# elasticsearch-plugin list
ik
chmod 777 -R ik/
docker restart elasticsearch
ik_smart
ik_max_word
,将所有可能的词都列出来PUT cn
{"mappings": {"properties": {"name": {"type":"text","analyzer":"ik_smart","search_analyzer": "ik_smart"}}}
}
GET _analyze
能看到分词情况,match
是看不到的,只能显示匹配到的结果,也就是我们 POST 进去的数据,但通过 match 中传入不同的查询字符串都能得到这个结果就可以证明分词是起效的eq
时也就无法匹配上