Elasticsearch的简单使用(二)

1.索引的建立

  存储数据到 Elasticsearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里。

  一个 Elasticsearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性

首先了解增删改查的基本头部:

1)GET:获取请求对象的当前状态。
2)POST:改变对象的当前状态。
3)PUT:创建一个对象。
4)DELETE:销毁对象。
5)HEAD:请求获取对象的基础信息

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

注意,路径 /megacorp/employee/1 包含了三部分的信息:

megacorp
索引名称
employee
类型名称
1
特定雇员的ID 

同样,再次增加文档依然可以沿用上面代码,分别可以为2,3.....

2.检索文档

GET /megacorp/employee/1

结果便可以看到文档的相应属性和信息,这些属性是ES内部自行运行得到的。

  而将固定的文档1变为_search后,便可以查询索引里所有的文档内容。返回结果不仅告知匹配了哪些文档,还包含了整个文档本身:显示搜索结果给最终用户所需的全部信息。

3.高级检索

Elasticsearch 提供一个丰富灵活的查询语言叫做 查询表达式 它支持构建更加复杂和健壮的查询。领域特定语言 (DSL), 指定了使用一个 JSON 请求。

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

检索到的时‘last_name’里含有Smith的文档内容。

4.复杂的检索

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

这部分与我们之前使用的 match 查询 一样。

这部分是一个 range 过滤器 它能找到年龄大于 30 的文档,其中 gt 表示_大于(_great than)。 

5.全文搜索

检索特定内容的文档

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

这里的检索词包含rock和climbing,检索的过程是以单词为基本检索单位的,所以含有两个单词之一或全部含有的文档都会被检索出来。

  当然,如果你想只是检索含有全部内容的文档,那么在匹配的时候应该用match_phrase来检索。

6.高亮搜索

GET /megacorp/employee/_search
{
    "query" : {
        "match_phrase" : {
            "about" : "rock climbing"
        }
    },
    "highlight": {
        "fields" : {
            "about" : {}
        }
    }
}

他会在检索后的文档中,标记你所需要查找的内容字符。

"I love to go <em>rock</em> <em>climbing</em>"

       这是一个关于 Elasticsearch 基础描述的教程,且仅仅是浅尝辄止,更多诸如 suggestions、geolocation、percolation、fuzzy 与 partial matching 等特性均被省略,以便保持教程的简洁。但它确实突显了开始构建高级搜索功能多么容易。不需要配置——只需要添加数据并开始搜索!

很可能语法会让你在某些地方有所困惑,并且对各个方面如何微调也有一些问题。没关系!本博客后续内容将针对每个问题详细解释,让你全方位地理解 Elasticsearch 的工作原理。

猜你喜欢

转载自www.cnblogs.com/qianshuixianyu/p/9279866.html