Для «ИЛИ» вы можете использовать «следует» с минимальным значением: 1
Для «И» вы можете использовать «должен»
Фильтр используется, если вы не хотите рассчитывать оценка за результат поиска. constant_score - возвращает каждый соответствующий документ с показателем релевантности, равным значению параметра boost.
В вашем случае может быть достаточно только одного фильтра, если вы хотите использовать constant_score, то оберните запрос фильтра с помощью constant_score и используйте boost
Запрос1:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match_phrase": {
"yelp_address": "370 Barren Rd"
}
},
{
"match": {
"yelp_businessname": "Computer"
}
}
],
"minimum_should_match":1
}
},
{
"bool": {
"should": [
{
"match": {
"yelp_state": "CT"
}
},
{
"match_phrase": {
"yelp_category": "flooring"
}
}
],
"minimum_should_match":1
}
}
]
}
}
}
}
}
Запрос2:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match_phrase": {
"yelp_address": "370 Barren Rd"
}
},
{
"match": {
"yelp_businessname": "Computer"
}
}
]
}
},
{
"bool": {
"should": [
{
"match": {
"yelp_state": "CT"
}
},
{
"match_phrase": {
"yelp_category": "flooring"
}
}
],
"minimum_should_match":1
}
},
{
"range": {
"yelp_noofreviews": {
"lt": 3
}
}
},
{
"range": {
"yelp_noofrating": {
"gt": 3
}
}
}
]
}
}
}
}
}