1.倒排索引
常规的索引建立方式:
- 文件>关键词的映射过程(正向索引)
缺点:费时,需要将文档全部遍历一遍
倒排反向建立索引
- 关键词>文档的映射
把正向索引的结果重新构建成倒排索引
通俗解释:
例如有5个文档,全文搜索将这5个文档进行分词(中文或英文),将文档中一个个单词根据不用的语言,拆分成单个微小的词项,然后每个单词都有一个id,对文档也做一个集合,然后对单词集合和文档集合得到一张表
2.简易的增删改查操作
2.1 添加文档
注意:
1.如果不指定文档id,新添加的文档会设置一个随机的id
2 如果文档id已经存在,那么新添加的文档会覆盖之前的文档
2.2 通过文档id来获取文档信息
GET /索引/类型/文档id (不需要任何参数,包括_search或query)
2.3 通过_source获取指定的字段
需要显示的字段直接用","相隔
2.4 我们更新同一个文档id下的文档,可以通过覆盖的方式更像
这个方法上面有讲过
2.5 通过update的方式来单独更新想要更新的字段
例如:我们文档id为23时,文档内容如下
我们需要将content更改为:“我是超级大帅哥王晓峰2”
POST /索引/类型/文档id
_update
{
"doc":{
字段:值
}
}
在postman中
修改之后,我们发现标题已经有了改变
如果要修改一个json格式的字段中的某个值,
修改
3.Mget获取多个文档
需求:
同时获取多个文档信息
在index:bank和
下ID为1,2,3,4,15,28的文档信息
我们在上面讲的都是在一个索引下如何获取符合条件的文档,而现在我们要做的是查多个索引
我们现在能想到的就是一个一个去获取
GET /bank/bank_count/1
GET /bank/bank_count/2
GET /bank/bank_count/4
GET /shakespeare/line/3
GET /shakespeare/line/15
此时就需要用到 _mget这个api
GET http://127.0.0.1:9201/_mget
{
"docs": [
{
"_index": "bank",
"_type": "bank_count",
"_id": 1
},
{
"_index": "bank",
"_type": "bank_count",
"_id": 2
},
{
"_index": "bank",
"_type": "bank_count",
"_id": 4
},
{
"_index": "shakespeare",
"_type": "line",
"_id": 3
},
{
"_index": "shakespeare",
"_type": "line",
"_id": 15
}
]
}
查看返回值:
{
"docs": [
{
"_index": "bank",
"_type": "bank_count",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "tom"
}
},
{
"_index": "bank",
"_type": "bank_count",
"_id": "2",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "jerry"
}
},
{
"_index": "bank",
"_type": "bank_count",
"_id": "4",
"_version": 1,
"_seq_no": 1,
"_primary_term": 1,
"found": true,
"_source": {
"name": "jordan"
}
},
{
"_index": "shakespeare",
"_type": "line",
"_id": "3",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "jack"
}
},
{
"_index": "shakespeare",
"_type": "line",
"_id": "15",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "rose"
}
}
]
}
如何要获取相同索引相同type下的不同ID的文档,可以简便成这么写