文档章节

动态索引结构和索引更新机制

杨尚川
 杨尚川
发布于 2014/08/30 23:08
字数 722
阅读 2565
收藏 44

ElasticSearch的Schema free特性给动态提取并索引网页结构化文本内容提供了支持,使用URL的hash值来作为索引的主键(实际开发中使用URL作为主键,这里使用URLhash值是为了方便演示),当网页内容改变后,可以非常方便地更新索引。

 

下面演示了动态索引结构和索引更新机制:


1、提交索引:


curl -XPUT http://localhost:9200/webpage/finance/85723925 -d '

{

"url" : "http://money.163.com/14/0523/02/9ST8D7KR00253B0H.html",

"title" : "中国非一线城市限购可退出 楼市限购或全面松绑",

"content" : "昨日有消息称,除北上广深之外,其他城市的限购政策可以自行调节,尤其是库存过大的地方。这意味着除四大一线城市之外的30多个限购城市,有可能全面松绑限购政策。"

}

'

 

2、服务器响应:


{"_index":"webpage","_type":"finance","_id":"85723925","_version":1,"created":true}


3、查看索引结构:


需要elasticsearch-head插件,下面是安装方法:

 

plugin -install mobz/elasticsearch-head

 

浏览器访问:

 

http://localhost:9200/_plugin/head/

 



 

 

4、再次提交同样URL的索引,内容改变了:


curl -XPUT http://localhost:9200/webpage/finance/85723925 -d '

{

"url" : "http://money.163.com/14/0523/02/9ST8D7KR00253B0H.html",

"title" : "标题改了:中国非一线城市限购可退出 楼市限购或全面松绑",

"content" : "内容改了:昨日有消息称,除北上广深之外,其他城市的限购政策可以自行调节,尤其是库存过大的地方。这意味着除四大一线城市之外的30多个限购城市,有可能全面松绑限购政策。"

}

'


5、服务器响应:

 

{"_index":"webpage","_type":"finance","_id":"85723925","_version":2,"created":false}

 

可以看到,版本变为2,created为false,已经成功更新索引

 

6、再次提交同样URL的索引,不但内容改变了,而且新增了2个字段:


curl -XPUT http://localhost:9200/webpage/finance/85723925 -d '

{

"url" : "http://money.163.com/14/0523/02/9ST8D7KR00253B0H.html",

"title" : "标题改了:中国非一线城市限购可退出 楼市限购或全面松绑",

"content" : "内容改了:昨日有消息称,除北上广深之外,其他城市的限购政策可以自行调节,尤其是库存过大的地方。这意味着除四大一线城市之外的30多个限购城市,有可能全面松绑限购政策。",

"keywords" : "试探,限购政策,淡出,一次次",

"description" : "中国非一线城市限购可退出 楼市限购或全面松绑,试探 限购政策 淡出 一次次"

}

'


7、服务器响应:

 

{"_index":"webpage","_type":"finance","_id":"85723925","_version":3,"created":false}

 

8、再次查看索引结构:




 

可以看到,新增的两个索引字段已经添加到索引里面了

 


© 著作权归作者所有

杨尚川

杨尚川

粉丝 1103
博文 220
码字总数 1624053
作品 12
东城
架构师
私信 提问
加载中

评论(2)

杨尚川
杨尚川 博主

引用来自“曾杰”的评论

不是很清楚这个特性的应用场景,可否详细解释下?0
不需要预先定义模式,很灵活
曾杰
曾杰
不是很清楚这个特性的应用场景,可否详细解释下?0
ES6-映射(mapping)

1.mapping映射概述 我们习惯上对ElasticSearch和数据库做了一些对比,索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构。 ElasticSearch中的映射(M...

贾峰uk
2018/07/02
241
0
索引:如何在海量数据中快速查找某个数据?

转自:https://blog.csdn.net/everyday/article/details/90763607 《数据结构与算法之美》 前面讲过MySQL数据库索引实现原理,底层是依赖B+树这种数据结构来实现的。那类似Redisp 这要的Key...

feiquan
08/19
0
0
【搜索引擎】动态索引的建立及更新策略

动态索引的建立 真实环境中,搜索引擎需要处理的文档集合往往都是动态集合,即在建好初始的索引后,不断有新文档进入系统,同时原先的文档集合内有些文档可能被删除或更改。例如我们的本地文...

努力拼搏的80后
2018/03/25
0
0
elasticsearch 索引过程

索引过程 1 IndexRequest UUID工具自动生成一个uuid,代码在IndexRequest的process方法内。 2TransportIndexAction 根据索引数据的id、类型以及索引分片信息进行哈希取模,确定把该条数据分配...

whk66668888
2017/09/05
0
0
【数据库系统概念】第11章 索引与散列 知识总结

《数据库系统概念》第11章知识点总结 索引与散列 数据库中的索引类似与图书的索引 两种基本的索引类型 (1)顺序索引:基于值的顺序排序 (2)散列索引:基于将值平均分不到若干散列桶中。一...

qq_37792173
2017/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器

一、前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 controll...

郑清
今天
7
0
javascript-十六进制随机颜色

<script> // 编写一个函数,获得一个十六进制的随机颜色的字符串(如#20CD4F) // function randomColor(){ // var r = random(0,255).toString(16); // var g = random(0,255).toString(16......

ACKo
今天
3
0
springBoot +mybatis 出现sql 语句在数据库可以查询到,但是赋值到实体类上就没有的情况?

1.不要老是反复查看自己是否写错了,为啥有的能出来有的出不来? 可以查看配置文件中是否配置全: 如果在application.yml 文件中是如下配置: mybatis: mapper-locations: classpath:mapp...

kuchawyz
今天
3
0
正则表达式

一、RegExp对象 进行验证和查找的API 1、创建对象: (1)用/创建(直接量):var reg=/正则/ig,表达式固定不变时使用 (2)用new创建:var reg=new RegExp(‘正则’,‘ig’),表达式需要...

wytao1995
今天
3
0
实战限流(guava的RateLimiter)

关于限流 常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取...

程序员欣宸
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部