Elasticsearch基于全文搜索引擎 Apache Lucene ,由Java开发而来,面向API进行搜索, Restful 风格,分布式文件存储。
Elasticsearch 将数据以JSON的格式文档的形式;
一个文档就是一个索引,类似数据库中一个数据表;
一个索引只对应一种类型
PUT 索引/类型/文档id
POST 索引/类型
此种方法生成的id
DELETE 索引/类型/文档id
GET 索引/类型/文档id
GET 索引/类型/_search
_search 为查询关键字
GET 索引/类型/_search?q=userName:liaoge777
查询userName为liaoge777的数据,q为查询参数赋值
_source 对应文档数据;
1.匹配搜索
GET 索引/类型/_search { "query": { "match": { "userName": "liaoge777" } } }
2.过滤搜索
GET 索引/类型/_search { "query": { "bool": { "must": { "match": { "userName": "lewis" } }, "filter": { "range": { "age": {"gt": 26} } } } } }
同时匹配用户名为lewis 并且 age 区间是大于26的数据
3.全文搜索(传统数据库难以做到的)
GET 索引/类型/_search { "query": { "match": { "favorite": "playing games" } } }
分别回去匹配 playing 和 games词汇,并返回符合条件的数据,并使用_score字段表示匹配度
4.短语搜索(严格匹配短语,而不去分割匹配的词汇)
GET 索引/类型/_search { "query": { "match_phrase": { "favorite": "playing games" } } }
不会分别匹配 playing 和 games,严格匹配字段包含 playing games的数据
5.高亮搜索
GET 索引/类型/_search { "query": { "match_phrase": { "favorite": "playing games" } }, "highlight":{ "fields": { "favorite": {} } } }
对符合条件的"favorite"字段加上高亮
6.聚合
关键字 aggs 类似SQL中的 Group by ,聚合并得到计数
{ "aggs": { "all_ages": { "terms": { "field": "age" } } } }
通过"age"字段分组,并得出分组计数结果
_search 为查询所有的关键字;
原文:https://www.cnblogs.com/lcmlyj/p/10583028.html