栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch 从5.6.3升级到7.9.3遇到问题总结

ElasticSearch 从5.6.3升级到7.9.3遇到问题总结

本文记录了ElasticSearch 从5.6.3升级到7.9.3遇到问题总结。对于升级过程不再详细描述,仅描述升级过程中遇到的问题。

1. 创建索引问题

报错:

--创建语句
{
    "settings": {
        "index": {
            "number_of_shards": "3",
            "number_of_replicas": "0"
        }
    },
    "mappings": {
        "search": {
            "_source": {
                "excludes": [
                    "jyfw"
                ]
            },
            "properties": {
                "jyfw": {
                    "type": "text",
                    "analyzer": "smartcn"
                },
                "dz": {
                    "type": "text",
                    "analyzer": "smartcn"
                },
                "jyfx": {
                    "type": "byte"
                },
                "jyzt": {
                    "type": "keyword"
                },
                "mc": {
                    "type": "text",
                    "fields": {
                        "kw": {
                            "type": "keyword"
                        },
                        "standard": {
                            "type": "text",
                            "analyzer": "standard"
                        }
                    },
                    "analyzer": "smartcn"
                }
            }
        }
    }
}
{
    "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "Root mapping definition has unsupported parameters:  [search : {_source={excludes=[jyfw]}, properties={sfs={type=keyword}, sssj={format=yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis, type=date},…… fddbr={type=keyword}, jyzt={type=keyword}, fxpj={type=byte}, zyry={analyzer=whitespace, type=text}}}]"
            }
        ],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [search : {_source={excludes=[jyfw]}, properties={sfs={type=keyword}, sssj={format=yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis, type=date}, ……, zyry={analyzer=whitespace, type=text}}}]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [search : {_source={excludes=[jyfw]}, properties={sfs={type=keyword}, sssj={format=yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis, type=date}, ……, jyzt={type=keyword}, fxpj={type=byte}, zyry={analyzer=whitespace, type=text}}}]"
        }
    },
    "status": 400
}

解决

将创建语句中,type节点去掉。mapper节点下,直接挂载_source和properties即可解决。上述的创建语句"search"节点就是旧版本中的type,去掉该节点,然后将 _source和properties节点上升一个层级就可以了。如下:

 "mappings": {
    "_source": {
       "excludes": [
          "jyfw"
        ]
    },
		"properties": {……}          
 }
2.插入数据问题
curl --location --request PUT 'http://10.57.36.17:9200/dg_ent_search_lr/1f3f5c8fd8416fb2ce03dc7029ab872a' 
--header 'Content-Type: application/json' 
--data-raw '{
    "qylx": "有限责任公司(自然人投资或控股的法人独资)",
    "xzqh": "福建省厦门市思明区",
    "clrq": "2019-02-02",
    "sshy": "互联网和相关服务",
    "zcdz": "厦门市思明区观日路608号2层206单元查看地图",
    "njrq": "2019-10-21",
    "zczb": "3,000万(元)",
    "sjzb": "-",
    "djjg": "厦门市市场监督管理局",
    "tyshxydm": "91350200MA32G64N19",
    "persons": "[{"xm":"李金鑫","zw":"总经理"}, {"xm":"李金鑫","zw":"执行董事"}, {"xm":"唐灵潇","zw":"监事"}]",
    "gszch": "",
    "jyfw": "信息技术咨询服务;软件开发;信息系统集成服务;数据处理和存储服务;其他未列明信息技术服务业(不含需经许可审批的项目)。",
    "nsrsbh": "91350200MA32G64N19",
    "holders": "[{"cgbl":"100%","sjcze":"-","rjcze":"3,000万(元)","gd":"北京宝沃汽车股份有限公司"}]",
    "mc": "厦门宝沃信息技术有限公司",
    "cym": "-",
    "yyqxks": "2019-02-02",
    "fddbr": "李金鑫",
    "jyzt": "开业",
    "zzjgdm": "MA32G64N-1"
}'

报错

{

​ “error”: “Incorrect HTTP method for uri [/dg_ent_search_lr/1f3f5c8fd8416fb2ce03dc7029ab872a] and method [PUT], allowed: [POST]”,

​ “status”: 405

}

将请求地址改为:

http://127.0.0.1:9200/dg_ent_search/index/1f3f5c8fd8416fb2ce03dc7029ab872a

报错2

{
“error”: {
“root_cause”: [
{
“type”: “illegal_argument_exception”,
“reason”: “mapper [jyzt] cannot be changed from type [keyword] to [text]”
}
],
“type”: “illegal_argument_exception”,
“reason”: “mapper [jyzt] cannot be changed from type [keyword] to [text]”
},
“status”: 400
}

解决

将请求地址改为

http://127.0.0.1:9200/dg_ent_search/_doc/1f3f5c8fd8416fb2ce03dc7029ab872a

即可成功。

在index后添加_doc则解决此问题。

3. 聚合查询统计

报错:Field [sshy] of type [keyword] is not supported for aggregation [sum]

原因:使用了SumAggregation ,sshy这个字段不是数值类型,无法计算。其实应该用TermsAggregation

4.安装问题

报错: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决: 在 /etc/sysctl.conf 追加最大虚拟空间限制 vm.max_map_count=655360 ,如下,记得 sysctl -p 使系统配置生效。

5.自定义重评分计算错误

执行语句如下:

{
    "size": 5,
    "query": {
        "bool": {
            "must": [
                {
                    "match_all": {
                        "boost": 1
                    }
                }
            ],
            "should": [
                {
                    "match_phrase": {
                        "jyfw": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "cppp": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "dh": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "mc": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "zcdz": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "mc.standard": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "fddbr": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "zyry": {
                            "query": "宝沃",
                            "slop": 20,
                            "zero_terms_query": "NONE",
                            "boost": 1
                        }
                    }
                }
            ],
            "adjust_pure_negative": true,
            "minimum_should_match": "1",
            "boost": 5
        }
    },
    "highlight": {
        "pre_tags": [
            ""
        ],
        "post_tags": [
            ""
        ],
        "fields": {
            "mc": {},
            "mc.standard": {},
            "zcdz": {},
            "dh": {},
            "jyfw": {},
            "zyry": {},
            "fddbr": {}
        }
    },
    "rescore": [
        {
            "query": {
                "rescore_query": {
                    "function_score": {
                        "query": {
                            "match_all": {
                                "boost": 1
                            }
                        },
                        "functions": [
                            {
                                "filter": {
                                    "match_all": {
                                        "boost": 1
                                    }
                                },
                                "script_score": {
                                    "script": {
                                        "source": "double k_capital=1.0/4;double k_company_age=1.0/3;if(doc['clrq'].size()==0){return 1;}long clrq_ms=doc['clrq'].value.getMillis();double capital=0;if(doc['zczbsz'].size()!=0){capital=doc['zczbsz'].value;}if(capital < 0){capital=0}double score_capital=(2+capital/1000);long company_age_ms=new Date().time-clrq_ms;long valid_date_threshold=-639129600;if((clrq_ms 

报错信息如下:

"script_stack": [
                    "clrq_ms=doc['clrq'].value.toInstant().toEpochMilli();double ",
                    "                         ^---- HERE"
                ],
"caused_by": {
                        "type": "illegal_argument_exception",
                        "reason": "dynamic method [java.lang.Long, toInstant/0] not found"
                    }

上面的问题是因为clrq 这个是一个非日期,没有toInstant()方法。当时排查结果是clrq是一个long型数值。此处的作用是调用date的方法转换成long型时间戳。自然调不到方法。

整改:将clrq的字段类型定义为date类型。并且保证传入的值是日期格式就行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号