ElasticSearch常用搜索总结以及对应的业务场景

一、索引管理

1、创建索引

     put: http://localhost:9200/索引名称

2、创建映射

  put   http://localhost:9200/索引库名称 /类型名称/_mapping

3、添加文档

PUT http://localhost:9200 /{index}/{type}/{id} { "field": "value", ... }

4、查询文档

GET http://localhost:9200 /{index}/{type}/{id}

5、更新文档

 ES更新文档的顺序是:先检索到文档、将原来的文档标记为删除、创建新文档、删除旧文档,创建新文档就会重建
索引。

  1、全部替换

  Post: http://localhost:9200 /{index}/{type}/{id} { "field": "value", ... }

2、局部更新

post: http://localhost:9200/{index}/doc/3/_update

    { 
    "doc":{"price":66.6}  //只更新价格字段    
   }

6、  删除文档

根据id删除,格式如下:
DELETE  http://localhost:9200/{index}/{type}/{id}
搜索匹配删除,将搜索出来的记录删除,格式如下:
POST    http://localhost:9200 /{index}/{type}/_delete_by_query

二、搜索管理

1、简单搜索

简单搜索就是通过url进行查询,以get方式请求ES。
格式:get ../_search?q=q=name:spring 搜索name中包括spring的文档。

2、DSL搜索

DSL(Domain Specific Language)是ES提出的基于json的搜索方式,在搜索时传入特定的json格式的数据来完成不
同的搜索需求。
DSL比URI搜索方式功能强大,在项目中建议使用DSL方式来完成搜索。

 1、 match All   所有全部   

     查询全部的内容,什么条件也没有。使用场景:一般用在刚进入页面什么也没有选择

2、分页查询

ES支持分页查询,传入两个参数:form:表示起始文档的下标,从0开始。size:查询的文档数量。

3、Term Query 精确查询(不讲搜索关键字分词)

   Term Query为精确查询不会讲搜索关键词分词的 一般用在让用户固定点击的条件。只能用一个字段

4、match Query 全文检索(将搜索的关键字分词)

 match Query 即全文检索,它的搜索方式是先将搜索字符串分词,再使用各各词条从索引中搜索。只能用一个字段

属性operator:or只有一个词就返回结果

属性:minimum_should_match可以设置"minimum_should_match": "80%"表示,三个词在文档的匹配占比为80%,即3*0.8=2.4,向上取整得2,表
示至少有两个词在文档中要匹配成功

5、multi  match Query 全文检索 (一次匹配多个字段查询)

匹配多个字段时可以提升字段的 boost(权重)来提高得分

6、Boo1 Query 布尔查询(实现综合查询)

布尔查询对应于Lucene的BooleanQuery查询,实现将多个查询组合起来
* must:文档必须匹配must所包括的查询条件,相当于 “AND” (用的最多的)
* should:文档应该匹配should所包括的查询条件其中的一个或多个,相当于 "OR"
* must_not:文档不能匹配must_not所包括的该查询条件,相当于“NOT’
 
 先定义一个MultiMatchQuery 匹配多个字段 然后再定义一个termQuery精确查询实现综合查询

7、filter 过虑器(在布尔查询里才有)

*   filter
* 过虑器是针对搜索的结果进行过虑,过虑器主要判断的是文档是否匹配,不去计算和判断文档的匹配度得分,所以过
* 虑器性能比查询要高,且方便缓存,推荐尽量使用过虑器去实现查询或者过虑器和查询共同使用。
*  过虑器在布尔查询中使用,下边是在搜索结果的基础上进行过虑:
*   range:范围过虑,保留大于等于60 并且小于等于100的记录。
*   term :项匹配过虑,保留studymodel等于"201001"的记录。
*  使用场景:针对 返回查询和tremquery(精确查询) 因为不计算的分所以效率高

8、sort排序

可以在字段上添加一个或多个排序,支持在keyword、date、float等类型上添加,text类型的字段上不允许添加排
序。

大家想看详细的ES学习可以到https://mp.csdn.net/postedit/100080414

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值