В настоящее время я пытаюсь перенести приложение на основе solr в elasticsearch.elasticsearch bool query union должен с OR
У меня есть этот Lucene запрос,
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
Насколько я понимаю, что это сочетание MUST положений в сочетании с Логическим ИЛИ:
«Получить все документы, содержащие (Foo и бар в имени) ИЛИ (foo AND bar в информации). После этого результат фильтра определяется условием state = 1 и форматированием документов, имеющих изображение. "
Я пытаюсь использовать запрос bool с MUST, но я не могу получить логические или необязательные предложения. Вот что у меня есть:
GET /test/object/_search
{
"from": 0,
"size": 20,
"sort": {
"_score": "desc"
},
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
},
{
"match": {
"name": "bar"
}
}
],
"must_not": [],
"should": [
{
"match": {
"has_image": {
"query": 1,
"boost": 100
}
}
}
]
}
}
}
Как вы можете видеть, ДОЛЖНЫ условия для «информации» отсутствуют.
У кого-нибудь есть решение?
Большое вам спасибо.
** UPDATE **
Я обновил свой elasticsearch запрос и избавились от этой функции балла. Моя базовая проблема все еще существует.
Существует хорошая документация по объединению запросов ElasticSearch: https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html –