Эластичный поиск, поиск любой фразы из набора фраз

Я заполняю набор этими значениями:

set.add("hey michael");
set.add("hey john");

Затем индексируйте два сообщения:

    mes.add("hey john how are you?");
    mes.add("hey michael how are you?");

    for(int i=0;i<mes.size();i++)
    {
        test.put("tag",mes.get(i));
        client.prepareIndex("test", "test",String.valueOf((i+1))).setSource(test).execute().actionGet();
    }

Что я хочу, чтобы найти сообщения, которые содержат одну из фраз в наборе. То есть в этом примере оба сообщения соответствуют критериям

Пока что я попробовал запрос на совпадение:

MatchQueryBuilder q =   QueryBuilders.matchQuery("tag",set).operator(MatchQueryBuilder.Operator.OR);
    System.out.println(q.toString());

который выглядит так:

{"match": {"tag": {"query": ["hey john", "hey michael"], "type": "boolean", "operator": "OR"}}}

и условия запроса:

.setQuery(QueryBuilders.termsQuery("tag",set))

без удачи - он возвращает 0 хитов

Какой запрос я должен использовать? пример будет очень полезным

0 ответов

Другие вопросы по тегам