生产项目中使用的Elasticsearch相关API介绍

搜索

ElasticsearchTemplate

  • 使用ElasticsearchTemplate,但是是自己定义的bean,ElasticsearchConfiguration
  • maven依赖使用的jar,需要与部署的elasticsearch版本一致
  • 主要使用SearchRequestBuilder构建请求,提交
  • setFetchSource,是否获取信息内容,false不获取,查询数量时可以使用。true,获取全部字段。也可以指定获取哪些字段,或者过滤掉哪些字段
  • setSize 获取的数量,不建议超过500
  • highlighter,设置高亮字段
  • addSort,增加排序,可以增加多个,评分排序为SortBuilders.scoreSort(),没有其他排序时,默认相关度评分倒序
  • searchAfter,在某个查询评分条件后,查询结果,用于深分页查询
  • setSearchType,可以指定搜索方式,如DFS_QUERY_THEN_FETCH
  • setPreference,可以指定优先搜索主分片
  • 使用SearchResponse接收请求结果,获取结果可以使用searchResponse.getHits().getTotalHits()

搜索方法

查询全部 matchAllQuery
  • MatchAllQueryBuilder matchAllQuery(),通过QueryBuilders.matchAllQuery()创建
  • 不设置查询条件,查询全部时使用
  • 类似数据库查询时的1=1
布尔查询 boolQuery
  • BoolQueryBuilder创建,BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
  • 可以包装其他查询,作为一个整体
  • 可以看做,起到一个括号的作用,把几个请求包在一起
精确匹配 termQuery
  • termQuery,TermQueryBuilder termQuery(String name, Object value),使用QueryBuilders.termQuery创建,完全匹配
  • termsQuery,TermsQueryBuilder termsQuery(String name, Object... values),匹配多个值,value也可以是其他类型或者集合,但要类型一致,和查询key的类型匹配,通过QueryBuilders.termsQuery创建,完全匹配
  • value不会被分词,直接匹配,完全命中,则会返回
短语匹配 matchPhraseQuery
  • matchPhraseQuery,MatchPhraseQueryBuilder matchPhraseQuery(String name, Object text),使用QueryBuilders.matchPhraseQuery创建,短语匹配
  • matchPhrasePrefixQuery,MatchPhrasePrefixQueryBuilder matchPhrasePrefixQuery(String name, Object text),使用QueryBuilders.matchPhrasePrefixQuery创建,前缀匹配
  • 类似于数据库的like查询,但也不一样,value会被分词
无评分查询 constantScoreQuery
  • 作为查询条件,但不参与评分
  • 例如根据关键词查询时,关键词的匹配相关度才是我们需要的,而站点id、栏目类型等,虽然作为查询条件,但并不需要它参与评分
  • ConstantScoreQueryBuilder constantScoreQuery(QueryBuilder queryBuilder),可以把其他不需要参与评分的请求条件,包在里面
普通查询 matchQuery
  • 单字段查询,matchQuery,``
  • 多字段查询 multiMatchQuery,一个查询条件value,需要匹配多个字段时使用。 MultiMatchQueryBuilder multiMatchQuery(Object text, String... fieldNames),fieldNames为字段列表,text会被分词
  • 可以指定typeBEST_FIELDS模糊查询,PHRASE短语匹配,PHRASE_PREFIX前缀匹配
是否有值 existsQuery
  • ExistsQueryBuilder existsQuery(String name),通过QueryBuilders.existsQuery创建
  • 类似于数据库的 is not null
范围查询 range
  • new RangeQueryBuilder(field).from(from).includeLower(includeLower).to(to).includeUpper(includeUpper),可用于范围查询,例如日期、数值等
  • 可包含边界值,也可以不包含

索引Bboss

  • 暂时只使用了bboss的http封装,借助它使用9200提交
  • 其实自己找一个http工具类也可以,只不过bboss封装了很多方法

索引库

  • index是否存在 existIndice
  • type是否存在 existIndiceType
  • 获取别名 _aliases
  • 删除别名 removeAlias
  • 添加别名 addAlias
  • 创建索引库 createIndiceMapping
  • 新建/修改type的mapping updateIndiceMapping
  • 删除索引库 dropIndice

增删改查

  • 新增/更新单个文档 addDocumentWithId addDocument
  • 删除文档 deleteDocument
  • 获取单个文档 getDocument
  • 根据查询删除 _delete_by_query

bulk

  • 批量提交 _bulk

分词

  • _analyze
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持是一种态度

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值