在elasticsearch中索引(index)有三个层面的含义:
index(名词)
获取一份文档可以通过在浏览器中直接输入url、curl命令或程序es.get()好几种方式去完成。
浏览器: http://192.168.1.132/website/blog/1
curl: curl -XGET http://192.168.1.132/website/blog/1
程序(python):
from elasticsearch import Elasticsearch
from pprint import pprint
es = Elasticsearch(hosts=["192.168.1.132"])
s = es.get(
index="website",
doc_type="blog",
id=1
)
pprint(s)
uri /website/blog/1
中的 /website
就是一个index(名词), 第二级路径/blog
是类别, 用于对文档的二级归类.
index(动词)
指的是写入一份文档到一个索引(名词)中,这个行为叫做index(动词)。例如下面这段代码实际上就是将body这个json文档,写入到website
的索引(名词)中。
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts=["192.168.1.132"])
es.index(
index="website",
doc_type="blog",
id=1,
body={
"title": "My first blog entry",
"text": "Just trying this out...",
"date": "2014/01/01"
}
)
Inverted index(倒排索引)
关系型数据库中采用B-tree为某个指定的字段创建索引(该索引与上面两种说法都不一样),从而提高数据检索速度,而elasticsearch采用Inverted index(倒排索引)来达到相同目的。
elasticsearch在默认情况下,为每个字段都做了一个倒排索引。