考虑以下问题:
{
"query" : {
"match_phrase" : {
"_all" : "Smith"
}
}
}
我如何指定它可以搜索哪些类型的字段,而不是搜索所有内容? (字段名称在不同类型中可能是非唯一的)
我已经尝试了下面的查询,但它没有用(它不会返回结果,当我从所有字段中删除person.
时会这样做):
{
"query": {
"multi_match": {
"query": "Smith",
"fields": [
"person.first_name",
"person.last_name",
"person.age"
],
"lenient": true
}
}
}
我将这些查询发送到http://localhost:9200/tsf-model/_search
。
答案 0 :(得分:1)
如果您可以动态构建查询,我认为您可以为每种类型使用multi_match
查询和type
query的组合,以实现您的目标:
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"filter": [
{
"type": {
"value": "type1"
}
},
{
"multi_match": {
"query": "Smith",
"fields": [
"field1",
"field3",
"field5"
]
}
}
]
}
},
{
"bool": {
"filter": [
{
"type": {
"value": "type2"
}
},
{
"multi_match": {
"query": "Smith",
"fields": [
"field2",
"field4",
"field6"
]
}
}
]
}
}
]
}
}
}