赞
踩
ElasticSearch是面向文档的,它存储文档,并索引每个文档的内容使之可以被索引。ES选择json作为文档序列化格式。
索引:名词,类似一个数据库,是一个存储关系性文档的地方。
索引:动词,把关系型文档存到索引的过程,是插入。
ES使用倒排索引来索引文档,只有在倒排索引中存在的属性才能被搜索。
倒排索引,文档经过分词器分出许多词根,并把词根和文档的关联关系存在一个文档中。
term doc1 doc2 run X jump X swim X X fight X 当搜索一个语句,回返回所有存在该term的文档。如搜索run swim,doc1,doc2都存在索引,但doc1的匹配度更高。
term doc1 doc2 run X swim X X total 2 1 倒排索引存在的问题是必须完全按照倒排索引的字段来查询,只要单词不一样,就搜索不到匹配文档。如倒排索引分出的词是swiming,搜索swim,SWIM都不会匹配到。
可以的做法,规范搜索词,如SWIM后台转成swim去匹配。对于swiming,users这类的词,可以通过词干抽取,把swiming抽成swim,users抽成user。倒排索引数据会很大,需要压缩。
一个elasticSearch集群有多个索引(index),每个索引有多个type(类型),每个type有多个属性。
对于索引雇员目录,我们这么做
curl -X PUT "localhost:9200/megacorp/employee/1" -H 'Content-type: application/json;' -d'
{
"first_name": "John";
"last_name": "Smith";
"age": 25;
"about": "I love to go rock climbing";
"interests": ["sports", "music"]
}
'
返回
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
属性 | 含义 |
---|---|
_index | 存放索引 |
_type | 存放类型 |
_shards | 存放分片信息 |
_id | 插入的id |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。