如何使用 Elasticsearch query_string 通配符作为密钥
How to use Eleasticsearch query_string wildcards for the the key
我在 Elasticsearch 中索引的文档内部包含一个数组,如下所示。
"creditScoreTenantResults.123456789X.creditScore": [
73.72
],
"creditTenants.address.country.keyword": [
"country1"
],
"creditScoreTenantResults.123456789X.personalId.keyword": [
"123456789X"
],
"creditUuid.keyword": [
"9d7ba281-2602-42f7-aae7-40c802ede21c"
],
我实现了以下查询。
POST http://localhost:56677/csm/_search?pretty
Content-Type: application/json
{
"query": {
"query_string": {
"query": "creditScoreTenantResults.123456789X.creditScore :>10"
}
},
"fields": ["*"]
}
效果很好,但实际上我想问的问题实际上更像是 'give me all credit scores bigger then 10',所以我在阅读 时将查询字符串转换为 'creditScoreTenantResults.*.creditScore :>10'它应该工作。
不幸的是,Elasticsearch 报告解析异常,抱怨通配符版本它可以从“:>10”识别“:”,我提到的 post 是正确的吗?这个查询是否可行?
如果是,我该如何制定?
PS。我正在使用 Elasticsearch 7.16,可能无法使用它而我必须使用 ES8?
感谢解答。
query_string查询使用了Lucene query language,所以你的范围条件应该是这样的:
creditScoreTenantResults.\*.creditScore:{10 TO *}
我在 Elasticsearch 中索引的文档内部包含一个数组,如下所示。
"creditScoreTenantResults.123456789X.creditScore": [
73.72
],
"creditTenants.address.country.keyword": [
"country1"
],
"creditScoreTenantResults.123456789X.personalId.keyword": [
"123456789X"
],
"creditUuid.keyword": [
"9d7ba281-2602-42f7-aae7-40c802ede21c"
],
我实现了以下查询。
POST http://localhost:56677/csm/_search?pretty
Content-Type: application/json
{
"query": {
"query_string": {
"query": "creditScoreTenantResults.123456789X.creditScore :>10"
}
},
"fields": ["*"]
}
效果很好,但实际上我想问的问题实际上更像是 'give me all credit scores bigger then 10',所以我在阅读
不幸的是,Elasticsearch 报告解析异常,抱怨通配符版本它可以从“:>10”识别“:”,我提到的 post 是正确的吗?这个查询是否可行?
如果是,我该如何制定?
PS。我正在使用 Elasticsearch 7.16,可能无法使用它而我必须使用 ES8?
感谢解答。
query_string查询使用了Lucene query language,所以你的范围条件应该是这样的:
creditScoreTenantResults.\*.creditScore:{10 TO *}