Elastic Search 基本操作
基本操作
ElasticSearch操作
创建索引
- 一般索引
- 结构化索引
{
"novel": {
"properties": {
"title": {
"type": "text"
}
}
}
}
- 使用 postman PUT 方式:
http://192.168.45.135:9200/demo_test
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
},
"mappings":{
"man":{
"properties":{
"name":{
"type":"text"
},
"country":{
"type":"keyword"
},
"age":{
"type":"integer"
},
"data":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd||epoch_millis"
}
}
}
},
"woman":{}
}
插入数据
- 方式一:
- 指定文档ID 插入,在Postman 中使用PUT 方法
http://192.168.45.135:9200/demo_test/man/1
- 指定文档ID 插入,在Postman 中使用PUT 方法
- 方式二:
- 自动生成文档ID 插入,在Postman 中使用POST 方法,
http://192.168.45.135:9200/demo_test/man
- 自动生成文档ID 插入,在Postman 中使用POST 方法,
修改文档
- 方式一:
- 直接修改文档,打开Postmain,选择POST 方法,
http://192.168.45.135:9200/demo_test/man/1/_update
- 直接修改文档,打开Postmain,选择POST 方法,
-
方式二:
- 通过脚本修改文档,在raw 区输入以下内容:
-
所有年龄增加一岁。
{ "script": { "lang": "painless", "inline": "ctx._source.age += 1" } }
-
修改年龄为30 岁
{ "script": { "lang": "painless", "inline": "ctx._source.age = params.age", "params": { "age": 30 } } }
删除文档
- 打开Postman,选择DELETE 方法,输入
http://192.168.45.135:9200/demo_test/man/1
删除索引
- 打开Postman ,DELETE方法 输入
http://192.168.45.135:9200/demo_test
,执行结果如下:
查询语句
- 全表查询:GET 方法,打开Postman 输入
http://192.168.45.135:9200/demo_test/_search
-
条件查询:
- POST方法,在Postman 中输入
http://192.168.45.135:9200/demo_test/_search
,然后在raw 区域中编辑如下内容:查询name
中包含zhang
关键字,且按日期date
降序排序。
{ "query": { "match": { "name": "zhang" } }, "sort": [{ "date": { "order": "desc" } }] }
- POST方法,在Postman 中输入
-
聚合查询:
- 在Postman 中选择GET 方法,输入
http://192.168.45.135:9200/demo_test/_search
,然后在raw 区域中编辑如下内容:根据年龄和日期进行分组
{ "aggs": { "group_by_age": { "terms": { "field": "age" } }, "group_by_date": { "terms": { "field": "date" } } } }
- 在Postman 中选择GET 方法,输入
-
聚合统计:
- POST 方法,在Postman 中输入
http://192.168.45.135:9200/demo_test/_search
,然后在raw 区域中编辑如下内容:根据age
进行聚合统计
{ "aggs": { "grades_age": { "stats": { "field": "age" } } } }
- POST 方法,在Postman 中输入
query 条件
-
模糊匹配,在Postman 中选择Post方法,输入
http://192.168.45.135:9200/demo_test/_search
,然后在raw 区域中编辑如下内容:查询名称包含“java" 和 ”spark“ 的关键字{ "query": { "match": { "name": "java spark" } } }
-
近似匹配
- phrase match,就是要去将多个term作为一个短语,一起去搜索,只有包含这个短语的doc才会作为结果返回。match是只在包含其中任何一个分词就返回。
{ "query": { "match_phrase": { "name": "java spark" } } }
-
多字段匹配:查询
name
和countr
包含java
关键字{ "query": { "multi_match": { "query": "java", "fields":["name","country"] } } }