我想利用query_string
查询的功能,但我需要查询默认搜索字段的子集(不是全部,而且也不只是一个)。当我尝试传递许多默认字段时,查询失败。有什么建议吗?
未在查询中指定特定字段,因此我希望默认搜索三个字段:
{
"query": {
"query_string" : {
"query" : "some search using advanced operators OR dog",
"default_field": ["Title", "Description", "DesiredOutcomeDescription"]
}
}
}
答案 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上的页面。