我正在用这个值填充一个集合:
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 点击
我应该使用什么查询?示例将非常有帮助