如何使用 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 *}