首页 > 编程语言 >java用es报错ElasticsearchStatusException[Elasticsearch exception [type=x_content_parse_exception, reaso

java用es报错ElasticsearchStatusException[Elasticsearch exception [type=x_content_parse_exception, reaso

时间:2024-03-26 18:30:37浏览次数:28  
标签:exception parse reason 报错 数组 type 分词 es

java报错

ElasticsearchStatusException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:55] [bool] failed to parse field [must]]
]; nested: ElasticsearchException[Elasticsearch exception [type=parsing_exception, reason=[match] unknown token [START_ARRAY] after [query]]];

Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://xxxxx:9200], URI [/vertical/_search?typed_keys=true&max_concurrent_shard_requests=5&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&ignore_throttled=true&search_type=query_then_fetch&batched_reduce_size=512&ccs_minimize_roundtrips=true], status line [HTTP/1.1 400 Bad Request]
{"error":{"root_cause":[{"type":"parsing_exception","reason":"[match] unknown token [START_ARRAY] after [query]","line":1,"col":55}],"type":"x_content_parse_exception","reason":"[1:55] [bool] failed to parse field [must]","caused_by":{"type":"parsing_exception","reason":"[match] unknown token [START_ARRAY] after [query]","line":1,"col":55}},"status":400}

Caused by: ElasticsearchException[Elasticsearch exception [type=parsing_exception, reason=[match] unknown token [START_ARRAY] after [query]]]

分析:

注意报错信息,

type=parsing_exception

[HTTP/1.1 400 Bad Request]

所以我猜是请求参数有问题,经过控制变量法,发现是创建索引库时properties里面的字段type问题,type为text类型的字段不能传数组进去查询

下面为会报错的代码

创建索引库时,我们有一个字段cities,类型为text 即表示该字段需要分词

在java中,前端会传来要查询的城市集合,我们要根据城市筛选出合适的数据

下面我们构造查询条件,将前端传入的数组传入es进行查询

运行后就报上面的错误了

解决方法

当要采用传入数组进行查询时,字段名采用keyword类型,即该字段创建倒排索引时不用分词

至于为什么是这样设计的,我想应该是当你传数组查询时,es会遍历数组,相当于对数组进行了分词,当这个字段是text时,遍历数组后会再进行分词,就是二次分词了

细细语

至于我为什么犯这个错误,一开始我是不知道还能传数组给es查询的,所以我一开始想的是,设置city的类型为text(要分词),前端传来城市数组后,我将数组toString()后传给es,es对这个字符串进行分词,应该就可以对城市进行筛选了

标签:exception,parse,reason,报错,数组,type,分词,es
From: https://blog.csdn.net/m0_73665762/article/details/137053437

相关文章

  • 报错“由于目标机器积极拒绝,无法连接”怎么解决?
    原文链接:https://www.php.cn/faq/192504.html在我们有时连接sqlserver数据库时,通过本地端的数据库去连接别的机器的数据库,或者是服务器上的数据库,一般会出现“由于目标计算机积极拒绝,无法连接”的字样,那到底是什么原因呢?怎么解决?1、如果出现这样的情况,首先我们要排查对方的机器i......
  • 安装图形化界面时候报错 Transaction check error: file /boot/efi/EFI/centos from
    报错Transactioncheckerror:file/boot/efi/EFI/centosfrominstalloffwupdate-efi-12-5.el7.centos.x86_64conflictswithfilefrompackagegrub2-common-1:2.02-0.65.el7.centos.2.noarch如果在安装过程出现类似这种错误:Transactioncheckerror:file/boot/efi/EFI......
  • Android证书校验出现java.io.IOException: Invalid keystore format错误的解决方案
    使用下面命令keytool-list-v-keystore签名.keystore出现错误java.io.IOException:Invalidkeystoreformat一般出现这种错误的情况有2种可能1.密码错误2.JDK版本问题1.如果是JDK8生成的keystore,然后用JDK11(+)执行是没问题的,当前情况不需要解决,因为是成功......
  • 【常见错误】org.springframework.web.multipart.MultipartException request is not
    检查请求类型和内容类型MultipartException 错误通常发生在请求类型不是 multipart/form-data 或者内容类型不是预期的类型时。因此,要解决这个错误,需要确保请求的类型和内容类型正确。以下是一些检查步骤:检查请求类型确保发送到服务器的请求的HTTP方法为 POST,并且Cont......
  • requests.exceptions.MissingSchema: Invalid URLrequests.exceptions.ConnectionErro
    代码如下,运行时出现 requests.exceptions.ConnectionError:HTTPSConnectionPool(host='www.dropbox.com',port=443):Maxretriesexceededwithurl:/s/dm3m1o0tsv9terq/pytorch_model.bin?dl=1(CausedbyNewConnectionError('<urllib3.connection.HTTPSConne......
  • Dbeaver启动报错
       报错提示信息是“发生了错误,请参阅日志文件”。根据提示信息找到相关的日志文件,提示信息如下:      根据提示信息知道了出现问题的原因是上一次回话中有未保存的更改信息;需要刷新工作区进行恢复。并提示进入org.eclipse.core.resources出现的错误。既然问题的......
  • springBoot项目部署整合阿里云https证书报错
    springBoot项目部署整合阿里云https证书一直报错Keystore wastamperedwithor keystorepasswordwasincorrect  在百度没有找到原因,后来在B站上看到大佬说是这个原因,试了一下果然成功了,记录一下。原因是:阿里云的ssl配置yml的密码要用这个格式:key-store-password我配......
  • NAPI :创建头文件,调用so库中方法报错:undefined symbol: box_get_auth_count()
    报错信息使用的头文件#ifndefauthorization_H#defineauthorization_H...intbox_get_auth_count();...#endif//authorization_H错误原因找不到box_get_auth_count,建议使用extern"C"extern“C”申明下面的方法用C编译解决方法使用的头文件#ifn......
  • 为什么 export 导出一个字面量会报错,而使用 export default 就不会报错?
    核心其实总的来说就是export导出的是变量的句柄(或者说符号绑定、近似于C语言里面的指针,C++里面的变量别名),而exportdefault导出的是变量的值。需要注意的是:模块里面的内容只能在模块内部修改,模块外部只能使用。esModule在语法层面做了一层浅层的保护(即将import导入的变量......
  • SQLYOG连接数据库时报错1251
    报错图片报错原因:主要是由于mysql8以前的加密规则与mysql8以后的存在差异,一些版本旧的客户端和服务端版本差别太大!解决办法:1.修改加密规则(注意引号为英文单引号,后面结尾的分号必须带上,@符号和引号之间无空格,下同)ALTERUSER'root'@'localhost'IDENTIFIEDBY'passwor......