当前位置: 代码迷 >> 综合 >> Elastic(学习记录中)
  详细解决方案

Elastic(学习记录中)

热度:46   发布时间:2023-12-11 16:16:50.0

Elastic(学习记录中)

一、安装

#存储和检索数据
docker pull elasticsearch:7.4.2#可视化检索数据
docker pull kibana:7.4.2 

二、创建实例

1、ElasticSearch
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
#授权读写,保证权限
chmod -R 777 /mydata/elasticsearch/
# \是指换行,挂载目录,启动
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ 
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ 
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ 
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ 
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ 
-d elasticsearch:7.4.2特别注意: -e ES_JAVA_OPTS="-Xms64m -Xmx256m" \ 测试环境下,设置 ES 的初始内存和最大内存,否则导 致过大启动不了 ES2、Kibana
#ip修改为自己的ip
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \ -d kibana:7.4.2
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.253.131:9200 -p 5601:5601 \ -d kibana:7.4.2

http://192.168.253.131:9200/

查看es状态

三、初步检索

1、_catGET /_cat/nodes:查看所有节点 ,get是请求方式http://192.168.253.131:9200/_cat/nodesGET /_cat/health:查看es健康状况http://192.168.253.131:9200/_cat/healthGET /_cat/master:查看主节点 http://192.168.253.131:9200/_cat/masterGET /_cat/indices:查看所有索引 像show databases一样;http://192.168.253.131:9200/_cat/indices2、索引一个文档(保存)保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识 PUT customer/external/1;在 customer 	 索引下的 external 类型下保存 1 号数据为,类似MysqL插入数据customer类似于数据库external类似于表PUT customer/external/1    put是请求方式{"name":"John Doe" }PUT 和 POST 都可以, POST 新增。如果不指定 id,会自动生成 id。指定 id 就会修改这个数据,并新增版本号 PUT 可以新增可以修改。PUT 必须指定 id;由于 PUT 需要指定 id,我们一般都用来做修改 操作,不指定 id 会报错。3、查询文档(我简单来解释一下,查询customer下external下id为1的文档,get是请求)GET customer/external/1更新在链接上携带 ?if_seq_no=0&if_primary_term=1,乐观锁保持数据统一4、更新文档1、POST customer/external/1/_update { "doc":{ "name": "John Doew" } }2、POST customer/external/1{ "name": "John Doe2" }3、PUT customer/external/1{ "name": "John Doe" }5、更新同时增加属性POST customer/external/1/_update { "doc": { "name": "Jane Doe", "age": 20 } }PUT 和 POST 不带_update 也可以6、删除文档&索引DELETE customer/external/1DELETE customer下面这个要用kibana测试,5601端口
http://192.168.253.131:5601/
7、bulk 批量 API
POST customer/external/_bulk 
{"index":{"_id":"1"}
}
{"name": "John Doe" 
}
{"index":{"_id":"2"}
}
{	"name": "Jane Doe"
}

POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加

PUT 操作总会将数据重新保存并增加 version 版本;

带_update 对比元数据如果一样就不进行任何操作。

看场景;

对于大并发更新,不带 update;

对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则。

bulk API 以此按顺序执行所有的 action(动作)。如果一个单个的动作因任何原因而失败,

它将继续处理它后面剩余的动作。当 bulk API 返回时,它将提供每个动作的状态(与发送

的顺序相同),所以您可以检查是否一个指定的动作是不是失败了。

四、进阶检索

1、SearchAPIES 支持两种基本方式检索 : ? 一个是通过使用 REST request URI 发送搜索参数(uri+检索参数) ? 另一个是通过使用 REST request body 来发送它们(uri+请求体)一切检索从_search开始
GET bank/_search?q=*&sort=account_number:asctook - Elasticsearch 执行搜索的时间(毫秒)time_out - 告诉我们搜索是否超时 _shards - 告诉我们多少个分片被搜索了,以及统计了成功/失败的搜索分片 hits - 搜索结果hits.total - 搜索结果 hits.hits - 实际的搜索结果数组(默认为前 10 的文档) sort - 结果的排序 key(键)(没有则按 score 排序) score 和 max_score –相关性得分和最高得分(全文检索用)
  相关解决方案