Elastic(学习记录中)

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 的初始内存和最大内存,否则导 致过大启动不了 ES


2、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、_cat
    GET /_cat/nodes:查看所有节点 ,get是请求方式
    http://192.168.253.131:9200/_cat/nodes

    GET /_cat/health:查看es健康状况
    http://192.168.253.131:9200/_cat/health

    GET /_cat/master:查看主节点 
    http://192.168.253.131:9200/_cat/master

    GET /_cat/indices:查看所有索引 像show databases一样;
    http://192.168.253.131:9200/_cat/indices

2、索引一个文档(保存)
    保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识 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/1
    DELETE 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、SearchAPI
    ES 支持两种基本方式检索 : 
     一个是通过使用 REST request URI 发送搜索参数(uri+检索参数) 
     另一个是通过使用 REST request body 来发送它们(uri+请求体)

一切检索从_search开始
GET bank/_search?q=*&sort=account_number:asc
	took - Elasticsearch 执行搜索的时间(毫秒)
	time_out - 告诉我们搜索是否超时 
	_shards - 告诉我们多少个分片被搜索了,以及统计了成功/失败的搜索分片 
	hits - 搜索结果
	hits.total - 搜索结果 
	hits.hits - 实际的搜索结果数组(默认为前 10 的文档) 
	sort - 结果的排序 key(键)(没有则按 score 排序) 
	score 和 max_score –相关性得分和最高得分(全文检索用)



猜你喜欢

转载自blog.csdn.net/qq_38132995/article/details/114931761