Elasticsearch - 合并多个匹配短语
Elasticsearch - Merge multiple match phrases
我有以下查询,它工作正常。但是我的要求是我可以有多个短语需要在 OR 条件中匹配,有什么办法可以缩短查询。
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"primaryTags": {
"query": "Audience1",
"boost": 2
}
}
},
{
"match_phrase": {
"secondaryTags": {
"query": "Audience1",
"boost": 3
}
}
},
{
"match_phrase": {
"primaryTags": {
"query": "Audience2",
"boost": 2
}
}
},
{
"match_phrase": {
"secondaryTags": {
"query": "Audience2",
"boost": 3
}
}
}
],
"minimum_should_match": "1",
"boost": 1
}
}
}
我将不得不在每个新词组中添加两个主要和次要的匹配词组。
有没有办法让所有的初级和次级的短语分别在一个条件下?
您可以使用 multi_match query with type phrase。试试下面的搜索查询:
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "Audience1",
"fields": [
"primaryTags^2",
"secondaryTags^3"
],
"type": "phrase"
}
},
{
"multi_match": {
"query": "Audience2",
"fields": [
"primaryTags^2",
"secondaryTags^3"
],
"type": "phrase"
}
}
]
}
}
}
我有以下查询,它工作正常。但是我的要求是我可以有多个短语需要在 OR 条件中匹配,有什么办法可以缩短查询。
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"primaryTags": {
"query": "Audience1",
"boost": 2
}
}
},
{
"match_phrase": {
"secondaryTags": {
"query": "Audience1",
"boost": 3
}
}
},
{
"match_phrase": {
"primaryTags": {
"query": "Audience2",
"boost": 2
}
}
},
{
"match_phrase": {
"secondaryTags": {
"query": "Audience2",
"boost": 3
}
}
}
],
"minimum_should_match": "1",
"boost": 1
}
}
}
我将不得不在每个新词组中添加两个主要和次要的匹配词组。 有没有办法让所有的初级和次级的短语分别在一个条件下?
您可以使用 multi_match query with type phrase。试试下面的搜索查询:
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "Audience1",
"fields": [
"primaryTags^2",
"secondaryTags^3"
],
"type": "phrase"
}
},
{
"multi_match": {
"query": "Audience2",
"fields": [
"primaryTags^2",
"secondaryTags^3"
],
"type": "phrase"
}
}
]
}
}
}