如何在elasticsearch中搜索多个字段?

时间:2016-01-14 06:42:02

标签: elasticsearch

假设我有以下结构的文件。

{
  "text": "This is the road I mentioned",
  "created_at": "2015-01-11T05:30:36.000Z",
  "language": "en",
  "character_count": 25,
  "userInfo": {
    "id": 553669398108446700,
    "user_id": 2803103316,
    "user_screen_name": "blue555555"
  }
}

我需要在“text”字段中搜索关键字“road”,在“user_screen_name”字段中搜索另一个关键字“blue555555”。这基本上是在多个字段上搜索,我怎么能在elasticsearch中做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以在match查询中使用termbool/must个查询的组合,以便两个约束匹配。

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "text": "road"
          }
        },
        {
          "term": {
            "userInfo.user_screen_name": "blue555555"
          }
        }
      ]
    }
  }
}

答案 1 :(得分:1)

由于其中一个搜索是查询行为而另一个是过滤行为,我建议过滤查询。

{
  "query": {
    "filtered": {
      "query": {
        "match": {
          "text": "road"
        }
      },
      "filter": {
        "term": {
          "userInfo.user_screen_name": "blue555555"
        }
      }
    }
  }

}