一、请求参数的查询(QueryString)
GET /shop/_doc/_search?q=desc:慕课网
=
(select * from shop where desc='慕课网')
GET /shop/_doc/_search?q=nickname:慕&q=age:25
=
(select * from shop where nickname='慕' or age=25)
当属性的type是keyword时,不会被倒排索引,不会被分词
以上的方式称为 QueryString 查询方式,参数都是放在url中作为请求参数的,但大多数查询都是用DSL进行查询的。
二、DSL搜索
1.DSL定义
• Domain Specific Language
• 特定领域语言
• 基于JSON格式的数据查询
• 查询更灵活,有利于复杂查询
2.DSL格式语法
#查询
POST /shop/_doc/_search
{
"query": {
"match": {
"desc": "慕课网"
}
}
}
# 判断某个字段是否存在
{
"query": {
"exists": {
"field": "desc"
}
}
}
• 语法格式为一个json object,内容都是key-value键值对,json可以嵌套。
3.搜索不合法问题定位
DSL查询的时候经常会出现一些错误查询,出现这样的问题大多都是json无法被es解析,他会像java那样报一个异常信息,根据异常信息去推断问题所在,比如json格式不对,关键词不存在未注册等等。