繁体   English   中英

Elasticsearch 查询多个字段?

[英]Elasticsearch query with multiple fields?

我是 Elasticsearch 的新手。 我想按多个文件过滤

我有一些数据:

{
    "_index": "app",
    "_type": "test",
    "_id": "2121",
    "_score": 1,
    "_source": {
      "id": 2121,
      "name": "Toto",
      "category": {
         "id": 5
      },
      "state": {
         "id": 44
      },
      "stage": {
         "id": 6
      },
      "userAccepted": [ ],
      "userReferred": {
         "id": 1
      }
   }
}

如何按名称、类别和 state 过滤?

我尝试了很多解决方案,但它不起作用:

  {
  "query": {
    "query_string": {
      "query": "name:Toto AND state.id:44 AND category.id:5"
    }
  }
}

或者

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "default_field": "category.id",
            "query": "5"
          }
        },
        {
          "query_string": {
            "default_field": "name",
            "query": "test"
          }
        }
      ]
    }
  }
}

看看上面的查询,看看是否有帮助 谢谢

你的 Elasticsearch 是什么版本? 我在 v7.2 上测试了您的第一次查询尝试,它正确返回了您的示例文档。

如果您要进行复合must查询,我建议使用match查询。 例如,

{
  "query": {
    "bool": {
      "must": [
        {
          "match": { "name": "Toto" }
        },
        {
          "match": { "state.id": "44" }
        },
        {
          "match": { "category.id": "5" }
        }
      ]
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM