根据词条检索(注意默认分词器是分割单个汉字的,输入词组不识别)
Elasticsearch是面向文档(document oriented)的,它可以存储整个对象或文档(document)而不仅仅是存储(store),并且可以索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,可以对文档(而非成行成列的数据)进行索引、搜索、排序与过滤。Elasticsearch比较传统关系型数据库如下:
Relational DB -> Databases -> Tables -> Rows -> Columns |
Elasticsearch -> Indices -> Types -> Documents -> Fields |
索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库。事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。这只是一些内部细节——我们的程序完全不用关心分片。对于我们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。(索引的名字必须是全部小写,不能以下划线开头,不能包含逗号)
类型用于区分同一个索引下不同的数据类型,相当于关系型数据库中的表。在Elasticsearch中,我们使用相同类型(type)的文档表示相同的“事物”,因为他们的数据结构也是相同的。每个类型(type)都有自己的映射(mapping)或者结构定义,就像传统数据库表中的列一样。所有类型下的文档被存储在同一个索引下,但是类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引。例如,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。