具有多个默认字段的Elasticsearch query_string查询

时间:2017-12-27 22:53:06

标签: elasticsearch

我想利用query_string查询的功能,但我需要查询默认搜索字段的子集(不是全部,而且也不只是一个)。当我尝试传递许多默认字段时,查询失败。有什么建议吗?

未在查询中指定特定字段,因此我希望默认搜索三个字段:

{
    "query": {
        "query_string" : {
            "query" : "some search using advanced operators OR dog",
            "default_field": ["Title", "Description", "DesiredOutcomeDescription"]
        }
    }
}

1 个答案:

答案 0 :(得分:2)

如果您想在上述3个特定字段上创建查询,请使用fields参数。

{
    "query": {
        "query_string" : {
            "query" : "some search using advanced operators OR dog",
            "fields": ["Title", "Description", "DesiredOutcomeDescription"]
        }
    }
}

或者,如果您希望默认搜索这3个字段而不指定它们,则在设置映射时必须使用copy_to参数。然后将默认字段设置为连接字段。

PUT my_index

{
  "settings": {
    "index.query.default_field": "full_name" 
  },
  "mappings": {
    "my_type": {
      "properties": {
        "first_name": {
          "type": "text",
          "copy_to": "full_name" 
        },
        "last_name": {
          "type": "text",
          "copy_to": "full_name" 
        },
        "full_name": {
          "type": "text"
        }
      }
    }
  }
}

我已经使用了这个并且不推荐它,因为对标记化的控制可能是限制性的,因为你只能为连接字段指定一个标记化器。

Here是copy_to上的页面。