Elasticsearch轻量查询

Elasticsearch轻量查询

Elasticsearch有两种查询方式:

  • URI带有查询条件(轻量查询)
  • 请求体中带有查询条件(复杂查询)

第一种方式查询能力有限,不是所有的查询都可以使用此方式。而第二种方式将查询条件以JSON格式表现,并作为查询请求的请求体,此方法查询条件更具表现力,建议复杂的查询使用第二种方式。


轻量查询

GET twitter/_search?q=user:kimchy
参数名 参数值描述
q 查询字符串
df 查询字符串中未指定字段时所使用的默认字段
analyzer 用于查询字符串的分析器
analyze_wildcard 是否分析通配符查询或前缀查询,默认为否
default_operator 默认操作,AND或OR,默认为OR
lenient 格式转换错误是否被忽略,默认时否
_source 设置为false时,查询结果不包含_source字段
stored_fields 查询结果包含的字段,使用逗号分隔
sort fieldName:asc/fieldName:desc根据指定字段进行排序,可以存在多个sort(顺序很重要)
track_scores 查询结果中是否包含score数据
track_total_hits 查询结果中是否包含total数据
timeout 查询超时时间
terminate_after 每个分片收集文档的上限值,当文档超过上限时会终止查询。并在查询结果中terminated_early表示是否超过上限
from hit中第一个文档的起始位置
size hit中文档的数量
search_type 查询类型,可以是dfs_query_then_fetch或query_then_fetch。默认为query_then_fetch

查询字符串详解

查询字符串被解析为一系列词项和操作符,即q的参数值

查询字符串格式如下:

  • 根据status字段中的内容进行查询,返回字段中包含active的文档。
GET twitter/_search?q=status:active
  • 根据title字段中的内容进行查询,返回字段中包含quick或brown的文档。默认操作符为OR
GET twitter/_search?q=title:(quick OR brown)
GET twitter/_search?q=title:(quick brown)
  • 根据author字段中的内容进行查询,返回字段中包含John Smith短语的文档。
GET twitter/_search?q=author:"John Smith"
  • 根据book.title、book.content等字段中的内容进行查询,返回字段中包含quick或brown的文档。
GET twitter/_search?q=book.\*:(quick brown)
  • 根据title字段中的内容进行查询,返回字段不未空的文档。
GET twitter/_search?q=_exists_:title
  • 根据title字段中的内容进行查询,返回字段中包含以a开头或以b开头的文档。通配符*标识匹配0个或多个字符,通配符?标识1个字符。

通配符会影响查询效率,会消耗过多的内存。以通配符开头的查询,会匹配索引中所有的文档,不建议使用。

GET twitter/_search?q=title:(a* b?)
  • 根据name字段中的内容进行查询,返回字段中匹配//中正则表达式的文档。
GET twitter/_search?q=name:/joh?n(ath[oa]n)/
  • 根据name字段中的内容进行查询,返回字段中模糊匹配quikc的文档。模糊匹配的字符最多有2处与quikc不同,包括多字符、少字符、错位。
GET twitter/_search?q=name:quikc~
  • 根据count字段中的内容进行查询,返回字段中大于等于1并小于5的文档。
GET twitter/_search?q=count:[1 TO 5}
GET twitter/_search?q=count:(+>=1 +<5)
  • 根据title字段中的内容进行查询,返回字段中包含quick或fox的文档。quick文档相关性更高
GET twitter/_search?q=title:(quick^2 fox)
  • 根据title字段中的内容进行查询,返回字段中一定包含fox并不包含news的文档。quick brown可有可无,如果存在评分会更高。
GET twitter/_search?q=title:(quick brown +fox -news)

你可能感兴趣的:(Elasticsearch轻量查询)