ElasticSearch API总结

初学es,烦杂的api和概念感觉比SQL复杂多了,今日工作需要重拾es,简单总结了一下es的api,仅供自己记录。

Document API

针对文档级别的操作

  • index
  • get
  • delete
  • bulk
  • multiget
  • reindex
  • get by query
  • delete by query

Indices API

针对索引的操作

Search API

url /index/_search
返回默认按照分数排序

1. Query DSL

body json以query开头
本小节的查询语句,都是紧跟在query内,是并列关系
默认query context,计算匹配分数,是分析文档有多匹配查询
另一种是filter context,不计算文档的匹配分数(分数为0),只看是否匹配

两种context都是通过查询倒排索引实现的,是否能命中只看倒排索引中是否有该记录,区分只是是否计算分数。

query和filter两种conext,其他语句都属于二者之一,大部分语句是query,filter context包含以下情况:filter or must_notparameters in the bool query, the filter parameter in the constant_score query, or thefilter aggregation

两种context都可以包括full text level和term level的查询语句。

1.1 full text

  • match
  • match phrase
  • match phrase prefix
  • multi match

1.2 term level

  • term
  • terms
  • terms set
  • range
  • exists
  • prefix
  • wildcard
  • regexp
  • fuzzy
  • type
  • ids

1.3 compound

组合其他语句,可以组合term 和full text

1.3.1 bool语句

不能单独使用,必须包含以下语句。

  • must
  • filter
  • must_not
  • should
1.3.2 constant_score

必须包含filter和boost
filter内的查询,不计算分数,整个constant_score的查询结果,赋予boost的分数

1.3.3 dis_max
1.3.3 function_score

定义一个query和多个function,对query的结果通过函数重新计算分数

1.3.3 boosting

1.4 match_all和match_none

match_all返回所有,都给分数1

1.5 joining

1.6 Geo

1.7 specialized

1.8 span

Song wechat
扫一扫,关注微信公众号,订阅我的博客
扫码领红包,支持走一波