通过突出显示搜索所有字段

Search over all fields with highlighting

我最近在使用 Elasticsearch 2,想请求对所有文本字段的查询。

GET myindex/mydata/_search
{
  "query": {
    "simple_query_string": {
      "query": "Raketenfahrrad"
    }
  },
  "highlight": {
    "fields": [ { "*": {} } ]
  }
}

查询 returns 预期结果但没有任何突出显示。当我手动缩小搜索 fields 时,我遇到了突出显示的情况:

{
  "query": {
    "simple_query_string": {
      "query": "Raketenfahrrad",
      "fields": ["MainTitle","SubTitle","Author","Content"]
    }
  },
  "highlight": {
    "fields": [ { "*": {} } ]
  }
}

但这不符合我的要求 "Search over all" 并且在将下一个新的 属性 添加到 mydata 类型时会失败。

ES 2.0 开始, 对查询的字段执行突出显示,您必须将 require_field_match 选项设置为 falseHere是link改成

试试这个

{
  "query": {
    "simple_query_string": {
      "query": "Raketenfahrrad"
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    },
    "require_field_match" : false
  }
}