我有4种不同的映射:A
,B
,C
和D
。
对于映射A
和B
,以下查询可提供最佳结果:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"multi_match": {
"query": "....",
"analyzer": "keyword",
"fuzziness": "AUTO",
"fields": ["name*"]
}
}
]
}
}
]
}
},
"from": 0,
"size": 20
}
对于C
,以下查询可提供最佳结果:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"multi_match": {
"query": "....",
"analyzer": "simple",
"fuzziness": "AUTO",
"use_dis_max": false,
"fields": ["name*"]
}
}
]
}
}
]
}
}
}
对于D
,以下查询可提供最佳结果:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"multi_match": {
"query": "....",
"analyzer": "simple",
"fuzziness": 0,
"use_dis_max": false,
"fields": ["name*"]
}
},
{
"multi_match": {
"query": "....",
"analyzer": "simple",
"fuzziness": 3,
"fields": ["name*"]
}
}
]
}
}
]
}
}
}
我可以进行3个单独的查询并处理结果,但是结果很麻烦,而且花费时间更长。是否可以将这3个查询合并为一个,并说映射/类型A
和B
使用第一个多重匹配,C
使用第二个,D
使用第三。
答案 0 :(得分:1)
我使用Type Query提出了以下内容。
为简单起见,我仅考虑问题中提到的类型C
和D
的查询。
请注意,我还包含了boost
参数,并且以这样的方式提及了它:与{{1}类型的文档相比,C
类型的文档在结果中总是显得更高}}。
您可以继续并根据需要进行更改。
D
让我知道这是否有帮助!