ElasticSearch疯狂学习第一季
边学边用,更加深刻的理解ealsticSearch。
简易搜索:
GET /索引名/类型/_serch (_search全文搜索 出 全部数据返回)
获取指定信息
GET /索引名/类型/_serch?q=字段名:值
Query DSL搜索
Elasticsearch 提供了更加丰富灵活的查询语言,它被称作 Query DSL,通过它你可以完成更加复杂、强大的搜索任务。
GET /索引名/类型/_search
{
"query" : {
"match" : {
"字段名" : "值"
}
}
}
使用了match匹配获取信息。
更复杂的查询,添加条件:
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"字段名" : { "gt" : 30 } ----条件是大于30
}
},
"query" : {
"match" : {
"字段名" : "值"
}
}
}
}
}
更强大的功能:全文搜索
{
"query" : {
"match" : {
"about" : "匹配值"
}
}
}
查询所有关于匹配值的信息
最后会返回一个评分结果_score,也就是匹配度。
也可以使用更精确的匹配模式:
{
"query" : {
"match_phrase" : {
"about" : "匹配值"
}
}
}
全文检索精确匹配包含匹配值内容的信息-match_phrase。
高亮返回结果:
{
"query" : {
"match_phrase" : {
"about" : "匹配值"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
新增highlight标签,当返回对应结果时,会被包裹在highlight中。
统计汇总:(类似sql中的group by)
{
"aggs": {
"all_interests": {
"terms": { "field": "字段名" }
}
}
}
汇总对应的字段名(类似group by 字段)获取对应值。
其功能之强大,还可以匹配某种情况下的平均值,除此之外还有很多功能,比如建议、地理定位、过滤、模糊以及部分匹配等。
在elasticsearch中index索引代表一个数据库, type类型代表数据库中的一张表,
_id则代表一行数据。
POST
/索引名/类型/ID/_update ----更新操作
Delete /索引名/类型/ID -----删除操作
PUT /索引名/类型/ID -----创建操作 (不带ID则会自动创建一个22位字符的随机ID),如果存在则执行更新操作
使用脚步进行更新:
在脚本中称为:ctx._source
{
"script" : "ctx._source.views+=1"
}
更新一篇可能不存在的文档
{
"script" : "ctx._source.views+=1",
"upsert": {
"views": 1
}
}
初始化views,加载是初始化views为1 当下次在请求时就开始执行脚本内容
查询DSL:
GET /索引名/类型名?q=查询条件信息(可以为:q=+name:cx -applcde:123456)
前缀
"+"
表示
必须要
满足我们的查询匹配条件,而前缀
"-"
则表示
绝对不能
匹配条件。
没有
+
或者
-
的表示可选条件。匹配的越多,文档的相关性就越大。
-是表示不匹配条件 不匹配applcde为123456的 匹配名字为cx的
更加复杂的查询------------------------------------学习
+name:(mary john) +date:>2014-09-10 +(aggregations geo)
名字必须包含mary john 和时间必须为2014-09-10 , _all字段中包含aggregations geo的