ElasticSearch-官网中文文档的学习记录

本地使用的elasticsearch版本是5.6.8

1.基于脚本给 tags 数组添加一个新的标签的时候报错记录:

a).按照文档的操作方式,在postman中执行下面的请求时

POST /website/blog/1/_update
{
   "script" : "ctx._source.tags+=new_tag",
   "params" : {
      "new_tag" : "search"
   }
}

会提示如下错误,这是由于版本之间的语法不同造成的
在这里插入图片描述
b).之后从网上搜索,按照这个网址https://stackoverflow.com/questions/43079189/elasticsearch-script-variable-not-defined 给出的解决办法,改为这种请求方式就不会报错了

{
   "script" : {
     "source": "ctx._source.tags.add(params.new_tag)",
     "params": {
       "new_tag":"tag1"
     }
   }
}

其中将里面的inline改成了source,因为执行完后,DevTools提示inline写法已经被弃用,应使用最新写法source。

2.通过设置 ctx.op 为 delete 来删除基于其内容的文档的报错记录:

a).按照文档的操作方式,在postman中执行下面的请求时

POST /website/blog/1/_update
{
   "script" : "ctx.op = ctx._source.views == count ? 'delete' : 'none'",
    "params" : {
        "count": 1
    }
}

会提示如下错误,这是由于版本之间的语法不同造成的

在这里插入图片描述

b).改为下面这种请求方式之后就不会报错了

{
   "script": {
    "source" : "ctx.op = ctx._source.views == params.count ? 'delete' : 'none'",
    "params" : {
        "count": 1
    }
   }
}

执行之后的结果如下,可以看到对应的文档是删除成功了

在这里插入图片描述
3.在文档中组合过滤器查询中,按操作文档执行下面语句报错

GET /my_store/products/_search
{
   "query" : {
      "filtered" : { 
         "filter" : {
            "bool" : {
              "should" : [
                 { "term" : {"price" : 20}}, 
                 { "term" : {"productID" : "XHDK-A-1293-#fJ3"}} 
              ],
              "must_not" : {
                 "term" : {"price" : 30} 
              }
           }
         }
      }
   }
}

会出现下面的错误信息

在这里插入图片描述
这是由于过滤查询被弃用了,并在ES 5.0中删除,而我的ES版本正是5.6.8,所以改为下面这种查询方式就可以了

{
   "query" : {
        "bool" : {
            "should" : [
                { "term" : {"price" : 20}}, 
                { "term" : {"productID" : "XHDK-A-1293-#fJ3"}} 
            ],
            "must_not" : {
                "term" : {"price" : 30} 
            }
        }
   }
}

4.在文档的索引时输入即搜索中,在不用对数据重新创建索引而更新现有的索引中,执行下面脚本报错

PUT /my_index/my_type/_mapping
{
    "my_type": {
        "properties": {
            "name": {
                "type":            "string",
                "index_analyzer":  "autocomplete", 
                "search_analyzer": "standard" 
            }
        }
    }
}

报错如下:
在这里插入图片描述
这是由于版本问题的语法不同造成的,改为下面就可以成功执行了

PUT /my_index/my_type/_mapping
{
    "my_type": {
        "properties": {
            "name": {
                "type":            "string",
                "analyzer":  "autocomplete", 
                "search_analyzer": "standard" 
            }
        }
    }
}

从下面就可以看出搜索的是以standard 标准分析器搜索的
在这里插入图片描述
5.在执行elastic官网中的聚合操作时报错,执行如下脚本:

GET /cars/transactions/_search
{
    "size" : 0,
    "aggs" : { 
        "popular_colors" : { 
            "terms" : { 
              "field" : "color"
            }
        }
    }
}

报错信息如下:

在这里插入图片描述
这是由于5.x后对排序,聚合这些操作用单独的数据结构(fielddata)缓存到内存里了,需要单独开启,在执行聚合操作之前执行如下操作:

PUT   /cars/_mapping/transactions/

{
  "properties": {
    "color": { 
      "type":     "text",
      "fielddata": true
    }
  }
}

再一次执行聚合操作就不会报错了

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值