2014-10-03 88 views
1

我正在开发JSF项目并在本地Java Api(不是Jest)中使用Elastic Search。 我为elasticsearch索引映射中的高级全文搜索定义了分析器和nGram过滤器。如何使用java api查询定义?使用Java Api进行弹性搜索查询

curl -XPOST "http://localhost:9200/blurays/_search?pretty" -d' 
{ 
"size": 10, 
"query":{ 
"match": { 
"_all": { 
"query": "yellow bird", 
"operator": "and" 
     } 
      } 
     } 
}' 

回答

1

我不知道你的意图,但如果你想创建一个“和” /“或”查询尝试这样的事:

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 

和例如:

boolQueryBuilder.must(QueryBuilders.matchQuery(field, value)); 

您可以根据需要添加尽可能多的查询(任何类型 - multiMatch,term等)。试试还应该()或mustNot()方法 - 取决于你想要什么。

这里是一个更复杂的例子: http://massapi.com/class/bo/BoolQueryBuilder.html


编辑: 谢谢你的评论,现在我想我明白了。 像下面的东西?

QueryBuilders.matchQuery(field, value).operator(MatchQueryBuilder.Operator.OR); 
+0

其实我想做点什么http://blog.qbox.io/multi-field-partial-word-autocomplete-in-elasticsearch-using-ngrams这个链接。我制作了所有分析器,ngram ve tokenizer定义。我成功地使用curl来处理这个查询,但是我在java api中尝试了很多查询类型并且没有解决方案。 – 2014-10-03 07:34:43

+0

感谢您的回复Tomek。编辑中的代码很好,非常感谢。你能看看这个问题吗?没有人回答这个http://stackoverflow.com/questions/25765465/elasticsearch-full-text-search – 2014-10-03 08:27:34