欢迎投稿

今日深度:

Elasticsearch 基本语法汇总,

Elasticsearch 基本语法汇总,


原文链接:http://www.dubby.cn/detail.html?id=9077

数据基本操作

在Elasticsearch中,包含多个索引(Index),相应的每个索引可以包含多个类型(Type),这些不同的类型每个都可以存储多个文档(Document),每个文档又有多个属性。一个索引索引 (index) 类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。

添加数据

PUT /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

这个URI后面的1代表的是这条数据的ID,也可以字符串。如果不想自己指定ID,可以不传,但是必须使用POST来新增,这样的话Elasticsearch会给这条数据生成一个随机的字符串。

如果想对这条数据进行更新,可以重新请求这个URI,关键是这个ID要指定,然后修改json内容,这样就可以更新这条数据了。

检索数据

根据ID检索到具体某条数据:

GET /megacorp/employee/1

结果:

{
    "_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"
        ]
    }
}

其中_source就是我们存储的json信息,其他字段都很明了。

将HTTP动词由PUT改为GET可以用来检索文档,同样的,可以使用DELETE命令来删除文档,以及使用HEAD指令来检查文档是否存在。如果想更新已存在的文档,只需再次PUT。由此可见,Elasticsearch的作者深谙restful。

最简单的搜索

GET /megacorp/employee/_search

搜索指定Index下的Type的全部文档,默认每页只显示10条,可以通过size字段改变这个设置,还可以通过from字段,指定位移(默认是从位置0开始)。返回结果的 took字段表示该操作的耗时(单位为毫秒),timed_out字段表示是否超时,hits字段表示命中的记录

简单条件搜索

搜索last_name=Smith的数据:

GET /megacorp/employee/_search?q=last_name:Smith

条件搜索

GET /megacorp/employee/_search
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}

这段查询和上面的例子是一样的,不过参数从简单的参数变成了一个复杂的json,不过复杂带来的优势就是控制力更强,我们可以对查询做出更多精细的控制。

更复杂的搜索

根据last_name搜索,并且只关心年龄大于30的:

GET /megacorp/employee/_search
{
    "query" : {
        "bool": {
            "must": {
                "match" : {
                    "last_name" : "smith" 
                }
            },
            "filter": {
                "range" : {
                    "age" : { "gt" : 30 } 
                }
            }
        }
    }
}

这里新增了一个range过滤器,gt 表示_大于(_great than)。

全文搜索

GET /megacorp/employee/_search
{
    "query" : {
        "match" : {
            "about" : "rock climbing"
        }
    }
}

在此之前在新加一个数据:

PUT /megacorp/employee/1
{
    "first_name" :  "杨",
    "last_name" :   "正",
    "age" :         24,
    "about":        "一个Java程序员,热爱编程,热爱生活,充满激情。欢迎访问个人博客网站 www.dubby.cn,和个人

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/35190.html NewsArticle Elasticsearch 基本语法汇总, 原文链接:http://www.dubby.cn/detail.html?id=9077 数据基本操作 在Elasticsearch中,包含多个索引(Index),相应的每个索引可以包含多个类型(Type),这些不同的类型...
相关文章
    暂无相关文章
评论暂时关闭