弹性搜索返回错误的结果

时间:2015-12-26 12:53:22

标签: elasticsearch

我正在运行针对弹性搜索的查询,但返回的结果是错误的。我的想法是,我可以使用单个查询来检查一系列字段。但是,当我传递以下查询时,将返回没有包含阵容的项目。

query: {
  bool: {
    must: [
      {match:{"lineup.name":{query:"The 1975"}}}
    ]
  }
}

对象是看起来像的事件。

{
  title: 'Glastonbury'
  country: 'UK',
  lineup: [
    {
      name: 'The 1975',
      genre: 'Indie',
      headliner: false
    }
  ]
},
{
  title: 'Reading'
  country: 'UK',
  lineup: [
    {
      name: 'The Strokes',
      genre: 'Indie',
      headliner: true
    }
  ]
}

在我的情况下,返回这两个事件。

可以在这里看到映射: https://jsonblob.com/567e8f10e4b01190df45bb29

1 个答案:

答案 0 :(得分:3)

您需要使用match_phrase查询,match查询正在寻找 1975 并找到 in 笔画,它会为你提供结果。

尝试

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "lineup.name": {
              "query": "The 1975",
              "type": "phrase"
            }
          }
        }
      ]
    }
  }
}