ES脚本

默认情况下,es一次展示10条数据,通过from和size来控制分页

查询结果详解

GET goods/_search
{
"query": {
"match_all": {}
},
"from": 0,
"size": 100
}

GET goods

term查询

GET goods/_search
{
"query": {
"term": {
"title": {
"value": "华为"
}
}
}
}

match查询

GET goods/_search
{
"query": {
"match": {
"title": "华为手机"
}
},
"size": 500
}

GET goods/_search
{
"query": {
"match": {
"title": {
"query": "华为手机",
"operator": "and"
}
}
}
}
GET _analyze
{
"analyzer": "ik_smart",
"text": "施华洛世奇"
}

wildcard 查询。查询条件分词,模糊查询

GET goods/_search
{
"query": {
"wildcard": {
"title": {
"value": "华*"
}
}
}
}

正则查询

GET goods/_search
{
"query": {
"regexp": {
"title": "\w+(.)*"
}
}
}

前缀查询

GET goods/_search
{
"query": {
"prefix": {
"brandName": {
"value": "三"
}
}
}
}

范围查询

GET goods/_search
{
"query": {
"range": {
"price": {
"gte": 2000,
"lte": 3000
}
}
},
"sort": [
{
"price": {
"order": "desc"
}
}
]
}

queryString

GET goods/_search
{
"query": {
"query_string": {
"fields": ["title","categoryName","brandName"],
"query": "华为 AND 手机"
}
}
}

GET goods/_search
{
"query": {
"simple_query_string": {
"fields": ["title","categoryName","brandName"],
"query": "华为 AND 手机"
}
}
}

boolquery

GET goods/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"brandName": {
"value": "华为"
}
}
}
],
"filter":[
{
"term": {
"title": "手机"
}
},
{
"range":{
"price": {
"gte": 2000,
"lte": 3000
}
}
}

  ]
}

}
}

GET goods/_search
{
"query": {
"bool": {
"filter": [
{
"term": {
"brandName": {
"value": "华为"
}
}
}
]
}
}
}

聚合查询

指标聚合 聚合函数

GET goods/_search
{
"query": {
"match": {
"title": "手机"
}
},
"aggs": {
"max_price": {
"max": {
"field": "price"
}
}
}
}

桶聚合 分组

GET goods/_search
{
"query": {
"match": {
"title": "手机"
}
},
"aggs": {
"goods_brands": {
"terms": {
"field": "brandName",
"size": 100
}
}
}
}

GET goods/_search
{
"query": {
"match": {
"title": "电视"
}
},
"highlight": {
"fields": {
"title": {
"pre_tags": "",
"post_tags": "
"
}
}
}
}

-------重建索引-----------

新建student_index_v1。索引名称必须全部小写

PUT student_index_v1
{
"mappings": {
"properties": {
"birthday":{
"type": "date"
}
}
}
}

GET student_index_v1

PUT student_index_v1/_doc/1
{
"birthday":"1999-11-11"
}

GET student_index_v1/_search

PUT student_index_v1/_doc/1
{
"birthday":"1999年11月11日"
}

业务变更了,需要改变birthday字段的类型为text

1. 创建新的索引 student_index_v2

2. 将student_index_v1 数据拷贝到 student_index_v2

创建新的索引 student_index_v2

PUT student_index_v2
{
"mappings": {
"properties": {
"birthday":{
"type": "text"
}
}
}
}

将student_index_v1 数据拷贝到 student_index_v2

_reindex 拷贝数据

POST _reindex
{
"source": {
"index": "student_index_v1"
},
"dest": {
"index": "student_index_v2"
}
}

GET student_index_v2/_search

PUT student_index_v2/_doc/2
{
"birthday":"1999年11月11日"
}

思考: 现在java代码中操作es,还是使用的实student_index_v1老的索引名称。

1. 改代码(不推荐)

2. 索引别名(推荐)

步骤:

0. 先删除student_index_v1

1. 给student_index_v2起个别名 student_index_v1

先删除student_index_v1

DELETE student_index_v1

给student_index_v2起个别名 student_index_v1

POST student_index_v2/_alias/student_index_v1

GET student_index_v1/_search
GET student_index_v2/_search

posted @ 2020-11-10 00:15  红尘客栈-zhang  阅读(206)  评论(0)    收藏  举报