我正在用这个值填充一个Set:
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());
看起来像这样:
{ &#34;匹配&#34; :{ &#34;标记&#34; :{ &#34;查询&#34; :[&#34;嘿约翰&#34;,&#34;嘿迈克尔&#34; ] &#34;类型&#34; :&#34;布尔&#34;, &#34;操作&#34; :&#34; OR&#34; } } }
和termsQuery:
.setQuery(QueryBuilders.termsQuery("tag",set))
没有运气 - 它返回0次点击
我应该使用什么查询?示例将非常有用