教程目录帖
http://www.sufeinet.com/thread-24643-1-1.html
3-Elasticsearch之轻量搜索
单个文档检索
上次的文章我们已经将一些雇员的信息存储到了Elasticsearch中,下面我们就应该是专注于对应用需求的处理了。我们的第一个需求是,查询一个雇员的信息
使用Elasticsearch非常简单,一个Http get就可以搞定了。我们指定一个文档的地方 ----索引库,类型和ID。就可以查询了,代码如下
[Shell] 纯文本查看 复制代码 GET /megacorp/employee/1
返回的结果中包含了一些文档的元数据,其实的_source属性,john smith就是雇员的Josn格式文档
如下
[Shell] 纯文本查看 复制代码 {
"_index" : "megacorp",
"_type" : "employee",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
}
引申意义
[HTML] 纯文本查看 复制代码
将 HTTP 命令由 PUT 改为 GET 可以用来检索文档,
同样的,可以使用 DELETE 命令来删除文档,以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档,只需再次 PUT 。
轻量搜索
一个get是相当简单的,可能直接得一指定的文档,我们给它增加一点难度,比如一个简单的条件查询
比如我们先查询所有的雇员信息
[C#] 纯文本查看 复制代码 GET /megacorp/employee/_search
可以看到,我们使用到了索引库megacorp以及类型employee,但与批定一个文档ID搜索不同的是,这次我们使用了_search。返回了所有个三个文档,放到了数组,hits中,一页或者是叫一个搜索默认最快是返回10条数据。这个可以自行调整
[Shell] 纯文本查看 复制代码 {
"took": 6,
"timed_out": false,
"_shards": { ... },
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "3",
"_score": 1,
"_source": {
"first_name": "Douglas",
"last_name": "Fir",
"age": 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 1,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 1,
"_source": {
"first_name": "Jane",
"last_name": "Smith",
"age": 32,
"about": "I like to collect rock albums",
"interests": [ "music" ]
}
}
]
}
}
在这里有两部分是 我们应该注意的,那些文档是匹配的,还包括文档本身,几乎是满足了一个搜索的全部需要
这个前者在后面我们会叫它”命中“
我们增加一下条件 ,搜索姓为“Smith”的雇员,这里我们需要使用到一个高级一点的搜索,通过命令行也是很容易完成的。
主要是要用到一个查询字符串_query-string_ 直接使用get也是比较简单
看代码
[Shell] 纯文本查看 复制代码 GET /megacorp/employee/_search?q=last_name:Smith
这就是条件了,
[Shell] 纯文本查看 复制代码 last_name:Smith
这里也是要使用_search和一个q参数把参数传入
看一下结果
[C#] 纯文本查看 复制代码 {
...
"hits": {
"total": 2,
"max_score": 0.30685282,
"hits": [
{
...
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
},
{
...
"_source": {
"first_name": "Jane",
"last_name": "Smith",
"age": 32,
"about": "I like to collect rock albums",
"interests": [ "music" ]
}
}
]
}
}
好了简单的查询就到了这里了,有兴趣的朋友跟着我的文章一起学习吧。
我也是一个初学者
记录下这些笔记也是方便后面不会的时候查看一下。
|