本地使用的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
}
}
}
再一次执行聚合操作就不会报错了