您的位置:首页 > 其它

ElasticSearch(五)-搜索

2016-05-19 16:33 246 查看
ES可以结构化查询,也可以进行全文检索

需要理解三个概念:

Mapping、Analysis、Query DSL

Mapping:类似于关系型数据库中的数据类型,但Mapping更加复杂,功能更加精细;

Analysis:索引和搜索时利用分词对数据进行分析;

Query DSL:ES功能强大的查询语言,但不容易掌握。

1.空搜索

GET /_search

响应:

{
"hits" : {
"total" :      14,
"hits" : [
{
"_index":   "us",
"_type":    "tweet",
"_id":      "7",
"_score":   1,
"_source": {
"date":    "2014-09-17",
"name":    "John Smith",
"tweet":   "The Query DSL is really powerful andflexible",
"user_id": 2
}
},
... 9 RESULTS REMOVED ...
],
"max_score" :   1
},
"took" :           4,
"_shards" : {
"failed" :     0,
"successful" :  10,
"total" :      10
},
"timed_out" :     false
}


Hits:total表示匹配的文档总数;

Took:告诉我们请求搜索的毫秒数;

Shards:参与查询的分片数

Timeout :设置超时

假如设置GET /_search?timeout=10ms

则ES顶多在10ms返回结果数据,哪怕数据不完整。

使用超时可能是业务需要,但执行的查询在后台依然进行,而不能中断查询,只是返回那一刻的查询结果。

2.多索引和多类别

/g*,u*/_search


在以
g
u
开头的索引的所有类型中搜索

/_all/user,tweet/_search
在所有索引的user和tweet中搜索
search types user and tweet in allindices
搜索一个索引有5个主分片和5个索引各有一个分片事实上是一样的

3.分页

size: 果数,默认10

from: 跳过开始的结果数,默认0

如果每页显示5个,页码从1到3:则

GET /_search?size=5

GET /_search?size=5&from=5

GET /_search?size=5&from=10

深度分页随着分页的深入,排序将成倍增长,所以一般的搜索引擎都不能返回多于1000个结果;

4.查询字符串

两种方式查询:

(1)简易版的query string

不建议用忽略

(2)使用完整的请求体DSL

后续介绍

5. _all 字段

索引一个文档,ES会把所有字段值放在一起,定义为_all

本文出处:/article/7596883.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: