Elasticsearch轻量查询

2018-03-21  本文已影响0人  syhc006

Elasticsearch轻量查询

Elasticsearch有两种查询方式:

第一种方式查询能力有限,不是所有的查询都可以使用此方式。而第二种方式将查询条件以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的参数值

查询字符串格式如下:

GET twitter/_search?q=status:active
GET twitter/_search?q=title:(quick OR brown)
GET twitter/_search?q=title:(quick brown)
GET twitter/_search?q=author:"John Smith"
GET twitter/_search?q=book.\*:(quick brown)
GET twitter/_search?q=_exists_:title

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

GET twitter/_search?q=title:(a* b?)
GET twitter/_search?q=name:/joh?n(ath[oa]n)/
GET twitter/_search?q=name:quikc~
GET twitter/_search?q=count:[1 TO 5}
GET twitter/_search?q=count:(+>=1 +<5)
GET twitter/_search?q=title:(quick^2 fox)
GET twitter/_search?q=title:(quick brown +fox -news)
上一篇下一篇

猜你喜欢

热点阅读