Здесь вы go, я использовал те же образцы документов и создал образец минимального сопоставления образцов, чтобы воспроизвести и опробовать вашу проблему.
Я использовал вложенный запрос bool с запросом фразы соответствия чтобы решить вашу проблему, как вам требуется ice cream
как фраза, иначе это было бы очень простой проблемой.
{
"mappings": {
"properties": {
"title": {
"type": "text"
},
"content": {
"type": "text"
}
}
}
}
И поисковый запрос
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match_phrase": {
"title": "ice cream"
}
},
{
"match_phrase": {
"content": "ice cream"
}
}
]
}
},
{
"bool": {
"should": [
{
"match": {
"title": "chocolate"
}
},
{
"match": {
"content": "chocolate"
}
}
]
}
}
]
}
}
}
Сначала выбирается do c только как показано ниже:
"hits": [
{
"_index": "phrasematch",
"_type": "_doc",
"_id": "1",
"_score": 2.3210695,
"_source": {
"title": "Ice cream",
"content": "Great with chocolate"
}
}
]