字符串语法查询和dsl查询之间的区别

时间:2014-07-03 07:44:11

标签: elasticsearch

query-string-syntaxquery-dsl-queries之类的布尔查询有什么区别。

这是两个例子

 field1:value1 AND field2:value2

QueryBuilder qb = QueryBuilders
                    .boolQuery()
                    .must(termQuery("field1", "value1"))
                    .must(termQuery("field2", "value2"));

两者的优点和缺点是什么?哪一个更好?

1 个答案:

答案 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之外别无选择。

我希望我的答案清晰准确。