如何查询特定的Elasticsearch类型并获取与关键字匹配的记录?

问题描述 投票:0回答:1

我已经构建了以下ElasticSearch(POST)查询,以便获取符合以下标准的记录:-select type:“server”-select fields:“servername”,“silo”,“packages.displayname”,“packages.displayversion” ,“环境”

{
    "size": 10,
    "_source" : ["servername", "silo", "packages.displayname", "packages.displayversion","environment"],
    "query": {
          "type" : {
            "value" : "server"
        }
    }
}

有用 !

问题是当我想添加以下条件时: - “packages.displayname”=“Google Chrome”

{
    "size": 10,
    "_source" : ["servername", "silo", "packages.displayname", "packages.displayversion","environment"],
    "query": {
          "type" : {
            "value" : "server"
        },
        "match" : {"packages.displayname" : "Google Chrome"}
    }
}

它不起作用!引发以下错误:

"type": "parsing_exception",
                "reason": "[type] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
                "line": 8,
                "col": 9

我在ElasticSearch中完全是菜鸟。有人可以帮我弄清楚我应该如何编写查询吗?

谢谢

elasticsearch querydsl
1个回答
0
投票

你必须构建一个bool查询:

{
  "query": {
    "bool": {
      "must": {
        "match": {
          "packages.displayname": "Google Chrome"
        }
      },
       "must": {
        "type": {
          "value": "server"
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.