首页 > 解决方案 > 即使查询遵循文档,Elasticsearch 也会引发有关格式错误的通配符查询的错误

问题描述

我正在编写一个简单的 elasticsearch 查询,但无法让 elasticsearch 接受这样的简单查询(从运行 typescript 的节点控制台复制):

{
  query: {
    wildcard: {
      name: {
        value: 'begin*'
      }
    },
    bool: {
      must: [
        {
          term: {
            'companyId.keyword': 'KEYWORD'
           }
         }
       ]
     }
   } 
}

2点需要注意:

1.)查询的布尔部分将起作用并自行获得结果 2.)我在此处遵循了通配符的文档:https ://www.elastic.co/guide/en/elasticsearch/reference/7.x/查询-dsl-wildcard-query.html

但是,当我进行查询时,我得到了以下响应:

[wildcard] malformed query, expected [END_OBJECT] but found [FIELD_NAME]

我做错了什么?

标签: node.jselasticsearch

解决方案


您需要将通配符部分移动到布尔值中。如果您想同时匹配通配符和术语查询,它们应该在“必须”列表中,如下所示:

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "name": {
              "value": "begin*"
            }
          }
        },
        {
          "term": {
            "companyId.keyword": "KEYWORD"
          }
        }
      ]
    }
  }
}

推荐阅读