2017-02-22 13 views
0

Я пытаюсь для запроса elasticsearch 5,2 покоя конечной точки:Минимальное количество должно соответствовать, должны соответствовать POST

{ 
    "query": { 
     "bool": { 
      "should": [ 
       {"match": { "file-source": "css" }}, 
       {"match": { "file-source": "js" }} 
      ], 
      "minimum_number_should_match": 2 
     } 
    } 
} 

Однако это не возвращает HITS в ElasticSearch, я не понимаю, почему это не работа и документация ElasticSearch имеют очень мало примеров.

Я стараюсь соответствовать обоим. Но это может быть либо OR.

Существует файл-источник: "CSS", файл-источник: "JS", файл-источник: "JSON"

Но я хочу вариант обоего CSS И JS ...

Вот пример Java-кода при тестировании с Java API:

// conditions met from the form 
query.should(QueryBuilders.matchQuery("file-source", "css")); 
query.should(QueryBuilders.matchQuery("file-source", "js")); 
query.minimumNumberShouldMatch(2); 

ответ

1

Позволяет объяснить данный запрос.

"should": [ 
      {"match": { "file-source": "css" }}, 
      {"match": { "file-source": "js" }} 
     ] 

Это вернет все документы с файловым источником как css или js.

 A = <documents with file-source = css or jss> 

    "minimum_number_should_match": 2 
     B = A <documents with file-source at least 2 of css, jss> 

Это сужает результаты и ограничивает A документами, которые имеют как css, так и js. Помните, что «css OR js» также содержит «css и js». Но здесь, в вашем случае, кажется, что каждый doc имеет уникальный источник файлов, поэтому A станет пустым множеством, поскольку нет «css и js».

В этом случае B становится пустой, поскольку нет ни одного документа, который есть файл-источник = CSS и Jss

Попробуйте удалить - "minimum_number_should_match": 2. Он должен работать.

+0

Да, но когда я делаю это по-своему, он возвращает файл-источник «JSON» и «XML» тоже! Я думаю, я ищу ** «ТОЛЬКО Х ИЛИ Y» ** – Dexter

+1

попробуйте добавить «minimum_should_match»: 1 – mirdad

+0

Да, я думаю, что сейчас работает. Наверное, я не понял minimum_number_should vs minimum_should. Также почему «2» плохо работает? Но «1» работает? «1», как и в, 1 из них должны совпадать. 2, я думаю, оба должны присутствовать? – Dexter