Эластичный поисковый запрос bool объединяется с OR

В настоящее время я пытаюсь перенести приложение на основе solr вasticsearch.

У меня есть этот запрос lucene

(( 
    name:(+foo +bar) 
    OR info:(+foo +bar) 
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)

Насколько я понимаю, это комбинация предложений MUST в сочетании с логическим ИЛИ:

"Получить все документы, содержащие (строка foo AND в name) ИЛИ (строка foo AND в информации). После этого фильтра результаты по состоянию состояния = 1 и форсируют документы с изображением. "

Я пытался использовать запрос bool с ОБЯЗАТЕЛЬНО, но мне не удалось чтобы получить логическое ИЛИ в обязательных предложениях. Вот что у меня есть:

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
            }
          }
        }
      ]
    }
  }
}

Как видите, НЕОБХОДИМО условия для «информации».

У кого-нибудь есть решение?

Большое вам спасибо.

** ОБНОВЛЕНИЕ **

Я обновил свой запрос эластичного поиска и избавился от этой функции. Моя базовая проблема все еще существует.

144
задан Jesse 16 February 2015 в 10:15
поделиться