Elasticsearch 6.x版本全文检索学习之Search API。
1)、Search API,实现对es中存储的数据进行查询分析,endpoind为_search,如下所示。
方式一、GET /_search,对es中所有的数据进行查询。
方式二、GET /my_index/_search,针对单个索引的数据进行查询。
方式三、GET /my_index1,my_index2/_search,针对两个索引的数据进行查询。
方式四、GET /my_*/_search,指定索引查询,可以一次查询多个。
2)、查询的主要有两种形式。
形式一、URI Search。a、优点,操作简便,方便通过命令行测试。b、缺点,仅包含部分查询语法。案例如下:
GET /test_search_index/_search?q=username:al*
形式二、Request Body Search。a、es提供完备的查询语法Query DSL语法(Domain Specific Language)。案例如下:
GET /test_search_index/_search { "query": { "term": { "username": { "value": "alfred" } } } }
1、URI Search。通过url query参数来实现搜素,常用参数如下。
1)、q指定查询的语句,语法为Query String Syntas。q是关键字,后面跟的是查询的内容。
term与phrase词语。语法一、alfred way这种term查询等效于alfred OR way。语法二、"alfred way"这种phrase词语查询,要求先后顺序。
泛查询。alfred等效于在所有字段去匹配该term。
指定字段。name:alfred。
2)、df q中不指定字段时候默认查询的字段,如果不指定,es会查询所有字段。
3)、sort排序。
4)、timeout指定超时时间,默认不超时。
5)、from,size用于分页。
6)、Group分组设定,使用括号指定匹配的规则。括号的概念,是将值做一个分组,OR和AND是布尔操作符。括号制定了匹配的优先级。
(quick OR brown) AND fox。这个方式的意思是值先判断前面括号内的,再判断后面的。status:(active OR pending)。括号的另一个概念,就是将关键字作为一个整体,返回