提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 1.ES中的检索方式
- 第一种方式
- GET bank/_search # 检索bank下的所有信息,包括 type 和 docs
- GET bank/_search?q=*&sort=account_number:asc
- 第二种方式
- GET bank/_search
- 2.Query DSL
- 2.1 基本语法
- 2.2 match
- 2.3 match_phrase
- 2.4 multi_match[多字段匹配]
- 2.5 bool[复合查询]
- 2.6 filter[结果过滤]
- 2.7 term
1.ES中的检索方式
在ElasticSearch中支持两种检索方式
- 通过使用REST request URL 发送检索参数(uri+检索参数)
- 通过使用 REST request body 来发送检索参数 (uri+请求体)
第一种方式
GET bank/_search # 检索bank下的所有信息,包括 type 和 docs
GET bank/_search?q=*&sort=account_number:asc
第二种方式
通过使用 REST request body 来反射检索参数 (uri+请求体)
GET bank/_search
2.Query DSL
2.1 基本语法
ElasticSearch提供了一个可以执行的JSON风格的DSL(domain-specific language 领域特定语言),这个被称为Query DSL,该查询语言非常全面,并且刚开始的时候感觉有点复杂,真正学好它的方法就是从一些基础案例开始的。
2.2 match
上面我们用到来的match_all是匹配所有的数据,而我们现在要讲的match是条件匹配
如果对应的字段是基本类型(非字符串类型),则是精确匹配。
2.3 match_phrase
将需要匹配的值当成一个整体单词(不分词)进行检索,短语匹配
2.4 multi_match[多字段匹配]
2.5 bool[复合查询]
布尔查询又叫组合查询,bool用来实现复合查询,
bool
把各种其它查询通过 must
(与)、must_not
(非)、should
(或)的方式进行组合
复合语句可以合并任何其他查询语句,包括复合语句也可以合并,了解这一点很重要,这意味着,复合语句之间可以相互嵌套,可以表达非常复杂的逻辑。
2.6 filter[结果过滤]
并不是所有的查询都需要产生分数,特别是那些仅用于"filtering"的文档,为了不计算分数,ElasticSearch会自动检查场景并且优化查询的执行。
2.7 term
和match一样,匹配某个属性的值,全文检索字段用match,其他非text字段匹配用term