Elasticsearch中用通配符查询文档ID无结果,求解决方案
Elasticsearch 按ID前缀/通配符查询的解决方案
首先明确:ids查询是精确匹配文档ID的,不支持通配符、模糊匹配这类语法,所以你用transaction+0+*作为值查不到结果是正常的。
下面给你几个可行的解决思路:
方法1:使用wildcard查询直接匹配_id字段
直接针对_id字段做通配符匹配,示例请求如下:
{ "query": { "wildcard": { "_id": "transaction+0+*" } } }
方法2:使用prefix查询(更高效)
因为你的目标ID都是以transaction+0+开头的,用prefix查询比wildcard更高效,适合前缀匹配场景:
{ "query": { "prefix": { "_id": "transaction+0+" } } }
方法3:拆分ID字段存入文档(推荐长期方案)
如果这类查询比较频繁,建议把ID里的信息拆分出来单独存储,比如在文档里新增version(版本号,比如0、1)、transaction_id(比如1234、1235)字段,这样后续查询可以直接用精确匹配或者范围匹配,性能更好,也更灵活。
示例文档结构:
{ "_id": "transaction+0+1234", "version": 0, "transaction_id": 1234, // 其他字段... }
对应的查询语句:
{ "query": { "term": { "version": 0 } } }
内容的提问来源于stack exchange,提问作者SAS2Python
相关产品推荐
相关产品推荐

