一、请求参数的查询(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格式不对,关键词不存在未注册等等。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐