elasticSearch
- restfull 接口调用
- 1、写入数据
- 2、修改数据
- 3、删除数据
- 4、查询骚操作
- 4.1 简单查询
- 4.2 只查询自己想要的数据
- 4.3 查询排序
- 4.4 分页查询
- 4.5 多条件查询
- 4.6 filter过滤
- 4.7. 关于term与match
- 4.8 高亮显示
restfull 接口调用
1、写入数据
PUT /index_test/_doc/1
{
"name": "张三",
"age": 30,
"desc": "罗翔嘴里的张三"
}
PUT /index_test/_doc/4
{
"name": "寒冰",
"age": 20,
"desc": "没有位移,打团暴毙"
}
2、修改数据
修改之前:
POST /index_test/_doc/4/_update
{
"doc":{
"desc": "十人九坑,剩下一个是uzi?"
}
}
PUT 请求也可以修改数据,但全部信息都需要维护,没维护的数据将会清空,所以修改时使用 POST /index_test/_doc/4/_update 请求
3、删除数据
删除之前:
DELETE /index_test/_doc/3
删除之后:
4、查询骚操作
4.1 简单查询
查询名字是张三的:
GET index_test/_doc/_search
{
"query": {
"match": {
"name": "张三"
}
}
}
输出结果:
查询多个名字中间只需要空格隔开
例:
GET /index_test/_doc/_search
{
"query":{
"match": {
"name": "张三 寒冰"
}
}
}
结果:
4.2 只查询自己想要的数据
GET index_test/_doc/_search
{
"query": {
"match": {
"name": "张三"
}
},
"_source": ["name", "desc"]
}
查询结果:
4.3 查询排序
查询语句(降序):
GET index_test/_doc/_search
{
"query": {
"match": {
"name": "张三"
}
},
"sort":[
{
"age": {
"order": "desc"
}
}
]
}
查询结果:
查询语句(升序):
desc修改为asc,order为固定写法
4.4 分页查询
PUT index_test/_doc/5
{
"name": "张三丰",
"age": "35",
"desc": "太极张三丰有点溜"
}
GET index_test/_doc/_search
{
"query": {
"match": {
"name": "张三"
}
},
"sort":[
{
"age": {
"order": "desc"
}
}
],
"from": 0,
"size": 1
}
查询结果
from size相当于mysql中的limit参数
from:从第几条开始
size:查询多少条
4.5 多条件查询
GET /index_test/_doc/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"name": "张三"
}
},
{
"match": {
"age": 35
}
}
]
}
}
}
结果:
must表示多条件必须全部满足
GET /index_test/_doc/_search
{
"query":{
"bool": {
"should": [
{
"match": {
"name": "张三"
}
},
{
"match": {
"age": 35
}
}
]
}
},
"_source":["name","age"]
}
should表示满足match其中一个条件
GET /index_test/_doc/_search
{
"query":{
"bool": {
"must_not": [
{
"match": {
"name": "张三"
}
},
{
"match": {
"age": 35
}
}
]
}
},
"_source":["name","age"]
}
结果:
must_not表示不满足条件的
4.6 filter过滤
查询姓名有张三并且年龄大于22的
GET /index_test/_doc/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"name": "张三"
}
}
],
"filter":{
"range":{
"age":{
"gt": 22
}
}
}
}
},
"_source": ["name", "age"]
}
结果:
range表示范围
gte大于等于
lte小于等于
4.7. 关于term与match
term用于精确查询,不回被分词器解析
match会先经过分词器解析,再去查询
如果创建索引的时候指定数据类型为keyword,分词器也不会解析这个类型的数据
4.8 高亮显示
GET /index_test/_doc/_search
{
"query":{
"match": {
"name": "张三"
}
},
"highlight":{
"fields": {
"name": {}
}
}
}
自定义高亮
GET /index_test/_doc/_search
{
"query": {
"match": {
"name": "张三"
}
},
"highlight": {
"pre_tags": "<p class=key style='color:red'>",
"post_tags": "</p>",
"fields": {
"name": {}
}
}
}
结果:
pre_tags前缀
post_tags后缀