【ElasticSearch】使用Docker安装ElasticSearch、基本增删改查使用
一、ElasticsearchElasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。官方中文文档:Elasticsearch 权威指南二、安装1、拉取镜像docker pull elasticsearch2、新建容器并运行如果配置较低,可以设置初始、最大堆内存空间256m(默认是2G)docker run -e ES_JAVA_OPTS="-Xms256m -...
一、Elasticsearch
Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。
官方中文文档:Elasticsearch 权威指南
二、安装
1、拉取镜像
docker pull elasticsearch
2、新建容器并运行
如果配置较低,可以设置初始、最大堆内存空间256m(默认是2G)
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 elasticsearch
3、检测安装成功
浏览器访问 ip地址:9200
,返回结果如下,安装成功
附:常用命令
进入容器并使用命令行交互
docker exec -it d345daee829c /bin/bash
启动一个已经停止的容器
docker run d345daee829c
三、基本使用(Restful API)
使用 postman 进行测试
1、增加
使用 PUT 请求 进行增加操作,将以下 JSON 数据放入请求体 Body 中:
{
"name":"John",
"age":25,
"about":"I love coding",
"interests":["coding","running","sleeping","eating"]
}
可以看到响应的 JSON 数据:
2、删除
使用 DELETE请求 进行删除操作:
3、修改
仍然使用 PUT 请求 进行修改操作,只不过返回的 JSON 中的 result 为:"result": "updated"
4、查询
(1)使用 HEAD 请求 判断是否存在
(2)使用 GET 请求 获取整个 JSON
(3)查询所有:使用 _search 查询所有内容
(4)条件查询
条件查询1:直接使用 url 查询 about 属性包含 love 的内容
在返回结果中,可以看到搜索结果以及相关性得分:"_score": 0.25316024
条件查询2:使用查询表达式
(实际使用时,为了解决GET没有请求体的问题,可以使用POST请求)
(5)全文搜索:将 “I love” 分词之后检索
{
"query":{
"match":{
"about":"I love"
}
}
}
(6)短语搜索:将 “I love” 作为一个整体检索
{
"query":{
"match_phrase":{
"about":"I love"
}
}
}
(7)高亮搜索:将查询结果中的指定内容高亮出来
{
"query":{
"match":{
"about":"I am"
}
},
"highlight":{
"fields":{
"about":{
}
}
}
}
高亮搜索返回结果:
{
"took": 11,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 0.67779577,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "3",
"_score": 0.67779577,
"_source": {
"name": "Tim",
"age": 20,
"about": "I am a programmer, I hate cats, here add something.",
"interests": [
"programming",
"programming",
"programming"
]
},
"highlight": {
"about": [
"<em>I</em> <em>am</em> a programmer, <em>I</em> hate cats, here add something."
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "7",
"_score": 0.25316024,
"_source": {
"name": "John",
"age": 25,
"about": "I love coding",
"interests": [
"coding",
"running",
"sleeping",
"eating"
]
},
"highlight": {
"about": [
"<em>I</em> love coding"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 0.16044298,
"_source": {
"name": "Bob",
"age": 27,
"about": "I love cats",
"interests": [
"swimming",
"reading",
"thinking",
"washing"
]
},
"highlight": {
"about": [
"<em>I</em> love cats"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "6",
"_score": 0.16044298,
"_source": {
"name": "John",
"age": 25,
"about": "I love coding",
"interests": [
"coding",
"running",
"sleeping",
"eating"
]
},
"highlight": {
"about": [
"<em>I</em> love coding"
]
}
}
]
}
}
(8)多条件查询
查询 about 属性中包含 “I love” ,并且为 23 岁以上的雇员:
{
"query":{
"bool":{
"must":{
"match":{
"about":"I love"
}
},
"filter":{
"range":{
"age":{
"gt":23
}
}
}
}
}
}
更多推荐
所有评论(0)