首页 > 代码库 > 使用query ds进行搜索(search with query dsl)
使用query ds进行搜索(search with query dsl)
使用Query-string这种检索方式是方便于命令行的检索,但是他受到了诸多限制(see Search Lite)。ES还提供了一个丰富的,灵活的搜索方式:Query DSL。Query DSL允许用户构建更复杂而健壮的搜索条件。
DSL(Domain Specific Language)使用JSON作为请求体。使用DSL重新构建上一节的搜索条件如下:
GET /megacorp/employee/_search
{
"query":{
"match":{
"last_name":"smith"
}
}
}
curl -XGET ‘http://localhost:9200/megacorp/employee/_search?pretty‘ -d ‘{"query" : {"match" : {"last_name" : "smith"}}}‘
这个搜素将会和上一节返回相同的结果(Q1),可以发现这些搜索语句的结构是发生了变化的,这里不再使用query string作为参数了,而是使用JSON请求体作为替代,同时使用match这个关键字进行搜索(match是ES中集中查询方式中的一个)。
Q1:
使用curl -XGET ‘http://localhost:9200/megacorp/employee/_search?pretty‘ -d ‘{"query" : {"match" : {"last_name" : "smith"}}}‘进行查询返回的结果的确是和query string一样,如果是在浏览器中http://localhost:9200/megacorp/employee/_search?pretty&{"query" : {"match" : {"last_name" : "smith"}}}返回的结果就是三条记录,这个是有问题的,如果在HEAD中使用GET返回的是三个记录,使用POST返回的是两条记录。这里是有问题的。暂时无解。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。