Elasticsearch 数据搜索
Elasticsearch基于JSON文档或者基于URL的请求进行搜索。
Elasticsearch可以是Get请求也可以是Post请求,在搜索的过程可以搜索整个集群,也可以通过指定索引或类型的名称来限制范围。
Elasticsearch搜索的基本请求模块
query 搜索请求的重要组成部分,它配置了基于评分返回的最佳文档,包括了你不希望返回哪些文档。
size 代表了返回文档数量
from 和size一起使用 from用于分页操作。为了确定第二页的10项结果,Elasticsearch必须获取前20项的计算结果。结果集不断增加,获取某些数据分页的代开会增高
source 指定source字段如何返回,默认是返回所有的
_source
字段,通过设置,将过滤返回的字段,如果索引的文档过大,而且无需结果中的全部内容就是用该功能。sort 默认的排序基于文档的得分,如果不关心得分,或者期望许多文档部门的得分相同,添加额外的sort将帮助控制哪些文档被返回
在Elasticsearch的版本1之前,field用于过滤返回字段的组件。其行为就是返回可用的存储字段。如果没有存储字段可以使用。字段就从
image.png_source
返回。如果在索引中没有显示的存储字段,最好使用_source
模块
es导入外部json数据
curl -H "Content-Type:appliaction/json" -XPOST localhost:9200/index/mapping/_bulk --data-binary @account.json
data:
example1:分页
{
"from": 0, #从0开始
"size": 10,#返回10条数据
"_source": [
"name",#返回name
"age"#返回source
],
"query": {
"match_all": {}
}
}
example2 日期排序
{
"from": 0,
"size": 10,
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "desc" #age字段进行排序
}
}
]
}
example3 通配符
{
"from": 0,
"size": 10,
"query": {
"match_all": {}
},
"_source":{
"includes": [
"a*",#字段匹配a开头 *表示不做任何限制
"cre*"字段匹配 cre开头
]
}
}
回复的结构体
{
"took": 1, #查询所使用的毫秒数
"timed_out": false,#表明是否有分片超时,也就是说是否只返回了一部分结果
"_shards": {#成功响应请求和未能成功响应请求的分片数量
"total": 1, 总数量
"successful": 1,成功响应的数量
"skipped": 0,
"failed": 0#失败的数量
},
"hits": { #回复中包含了命中的键,其值是命中文档的数组
"total": 65, #该搜索请求所有匹配结果的数量
"max_score": 1.0,
"hits": [#命中关键词元素中的命中文档数组
{
"_index": "test_index",#结果文档的索引
"_type": "type",#结果文档的Elasticsearch类型
"_id": "AXkXLTgUjAep6aBo4z53",#结果文档的ID
"_score": 1.0,结果的相关性得分
"_source": { #请求的_source字段 如果为过滤则默认所有
"account_number": 32,
"balance": 48086,
"firstname": "Dillard",
"lastname": "Mcpherson",
"age": 34,
"gender": "F",
"address": "702 Quentin Street",
"employer": "Quailcom",
"email": "dillardmcpherson@quailcom.com",
"city": "Veguita",
"state": "IN"
}
}
]
}
}
如果没有存储文档的_sources或者fields,那么将无法从文档中获取数值
ES5启用的一些查询
filtered 使用bool查询,也支持filter子句。
and must在bool查询中 使用子句。
or should在bool查询中 使用子句。
missing 使用否定的exists查询。(也missing从query_string查询中删除)
limit 改用terminate_after参数。
fquery 过滤器和查询合并后过时。
query 过滤器和查询合并后过时。
query_binary 没有文件,已被删除。
filter_binary 没有文件,已被删除
网友评论