0

我正在用这个值填充一个集合:

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());

看起来像这样:

{“匹配”:{“标签”:{“查询”:[“嘿约翰”,“嘿迈克尔”],“类型”:“布尔”,“运算符”:“或”}}}

和条款查询:

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

没有运气 - 它返回 0 点击

我应该使用什么查询?示例将非常有帮助

4

0 回答 0