弹性搜索从一组短语中搜索任何短语

时间:2016-05-25 15:58:36

标签: elasticsearch elasticsearch-java-api

我正在用这个值填充一个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次点击

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

0 个答案:

没有答案