query-string-syntax和query-dsl-queries之类的布尔查询有什么区别。
这是两个例子
field1:value1 AND field2:value2
和
QueryBuilder qb = QueryBuilders
.boolQuery()
.must(termQuery("field1", "value1"))
.must(termQuery("field2", "value2"));
两者的优点和缺点是什么?哪一个更好?
答案 0 :(得分:0)
查询字符串是当您想要使用其余api查询elasticsearch时使用的语法,例如当您键入时:
curl -XGET "http://my_ip_adress:9200/my_index/my_type/_search" -d'
{
"query": {
"match_all": {}
}
}
但是当您使用java查询elasticsearch时会使用query-dsl,因此您必须使用查询构建器(如在帖子中),然后执行以下操作:
client
.prepareSearch(index)
.setTypes("my_type")
.setQuery(qb).execute().actionGet();
关于优点,查询dsl更适合在程序中使用,因为它们更快。但是如果你用另一种语言写java,那么除了使用restapi之外别无选择。
我希望我的答案清晰准确。