html分割线居中代码(html分割线虚线设置)

题目放在这里:

html分割线居中代码(html分割线虚线设置)

接前一节:https://www.toutiao.com/article/7113727029614215719/

——————————————————————————————————————-

———————-准备知识分割线————————————————————————

温故而知新,这里先复习下Elastic search的相关概念:

0.什么是ES?

摘自:https://cloud.tencent.com/developer/article/1750560

  • Elasticsearch 是分布式搜索和分析引擎。
  • Elasticsearch 为所有类型的数据提供近实时(near real-time)的搜索和分析。

常用场景:

  • 网站搜索
  • ELK 日志采集,存储,分析
  • 地理信息系统分析

像下图中使用的设计:

html分割线居中代码(html分割线虚线设置)

特点:

  1. ES是一个分布式文档存储,存储的数据都是序列化为 JSON documents 。
  2. 使用倒排索引存储数据,倒排索引比较适合全文本搜索。
  3. 基于Apache Lucene搜索引擎库,可以存储,检索文档及元数据。
  4. 支持 JSON 样式的查询语言 —— Query DSL,也支持 SQL 样式的查询。
  5. 集群部署,易于扩展。节点(node)分片(shard),将新的 node 添加到集群时,ES 会自动迁移 shard 到新 node 上,重新平衡集群。shard 分为两种 主分片(primary shard)和 副本分片 (replica shard)replica shard 存放的是 primary shard 的冗余副本 —— 可以防止集群故障,数据丢失,同时可以提高搜索或检索速度。在创建索引时 primary shard 数量是固定的,而replica shard 数量是可以更改的。分片由索引配置,分片越多,维护索引则开销则越大,分片大小越大,则 ES 在增减节点重新平衡集群时,分片移动时间越长。
  6. 集群恢复:跨集群复制 (CCR),可以自动将索引从主集群同步到热备份的辅助远程集群。

1.ES 和MySql 对比?

1.1 拿ES 和 mysql 做对比,es 里面的document 相当于mysql的table, 而document 相当于row, field 相当于column;

html分割线居中代码(html分割线虚线设置)

而es 中间支持shard的概念,可以把一个表(index)拆到不同的分片(shard),不同分片放到不同的节点,并通过replicaset 来做冗余保护。

html分割线居中代码(html分割线虚线设置)

html分割线居中代码(html分割线虚线设置)

2.python 如何使用ES?

参考这篇文章:

https://elasticsearch-py.readthedocs.io/en/7.x/

这里讲了几个概念,支持异步,支持复杂查询,支持ssl 模式交互等。

  1. es 支持异步方式做交互,为了提高查询效率。

https://elasticsearch-py.readthedocs.io/en/7.x/async.html

2.支持复杂查询DSL ,需要调用单独的接口:

https://elasticsearch-dsl.readthedocs.io/en/latest/

简单接口模式如下图:7.0 版本

html分割线居中代码(html分割线虚线设置)

3.传说中的倒排索引到底是什么意思?

摘自:https://cloud.tencent.com/developer/article/1750560

什么是倒排索引?

倒排索引也可以成为反向索引。

作为开发咱们经常接触到的就是 MySql,假设有一堆技术书籍,并且已经编上号。

  1. Java 并发编程之美
  2. Java 开发手册
  3. 深入分布式缓存
  4. Java 并发程序设计
  5. 算法
  6. 数据结构与算法

如果放在 MySql 里面就是这样

html分割线居中代码(html分割线虚线设置)

Mysql 中布局

此时我想查询所有关于 并发 的书籍。

select * from table_book where book_name like %并发%;

然后会开始遍历表格,查找到 1和4两条记录。

如果是倒排索引处理的话

首先会将每个名称进行分词,比如 Java 并发编程之美 会被分为 Java 、并发、 编程、 之 、美。分词结束之后按照词关联书籍的编号。

html分割线居中代码(html分割线虚线设置)

ES 中倒排索引

在倒排索引中搜索并发,然后进行检索,就很容易定位到关于并发书籍的编号。

——————————————————————————————————————-

———————-准备知识分割线————————————————————————

题目中要用到的几个函数:

es.count(index="index_name") 查询某table 中的条目数量,返回值是一个字典,含count 值和shard值。取count值即可获取相关信息。

html分割线居中代码(html分割线虚线设置)

收集某个表的行信息,看到是7行(count)

向ES里某个表里插入JSON数据:

es.index(index="inventory", id = int(id)+1 ,document={“name”:name,'Serial number':sn,'Value':value}


from Flask import Flask,render_template,request,url_for,redirect,jsonify
from datetime import date
import requests
from elasticsearch import Elasticsearch

app = Flask(__name__)

def store_into_es(name,sn,value):
    #连接ES
    es = Elasticsearch(['https://**.public.tencentelasticsearch.com:9200'],basic_auth=('elastic', '**'), sniff_on_start=False,sniff_on_node_failure=False,sniff_timeout=None)
    # 查看inventory 表中的信息
    id = es.count(index='inventory')['count']
    print(id)
    print(es.count(index='inventory'))
    #print("the id is ".format(id))
    try:
          print("the id is {0}, we need +1".format(id))
    except:
          print("the id is not exist")
          id = 0

    print("The info to be stored is {0}".format({'name':name,'Serial number':sn,'value':value}))
    res = es.index(index="inventory",id=int(id)+1,document={'name':name,'Serial number':sn,'value':value})

    print(res)
    return 1

def display_es():
    # 连接ES
    list1 =[]
    es = Elasticsearch(['https://**.public.tencentelasticsearch.com:9200'],basic_auth=('elastic', '**'), sniff_on_start=False, sniff_on_node_failure=False,sniff_timeout=None)
    # 查看inventory 表中的信息
    id = es.count(index='inventory')['count']
    for i in range(1, id + 1):
        res = es.get(index="inventory", id=i)
        print(res['_source'])
        list1.append(res['_source'])
    return list1

""" 
1.把数据json化, {'name':name,'Serial number':sn,'value':value};
2.把json数据插入表格inventory,其中id 为之前的id+1;
3.


"""

@app.route('/api/input/',methods=['POST'])
def edit():
    name = request.json['name']
    sn = request.json['sn']
    value = request.json['value']
    result = store_into_es(name,sn,value)
    if result == 1:
           info = "The inventory info is successful stored"
    else:
           info = "Something goes wrong, can not store into storage"
    return jsonify("info",info)


@app.route('/api/display/',methods=['POST'])
def display_info():
    list1 = display_es()
    return jsonify("enventory info",list1)


if __name__ =='__main__':
    app.run(host='0.0.0.0',port=8008,debug=True)

上代码,

看下插入的效果:

插入一条数据:{"name":"testitem22", "sn":"12164", "value":"434"}

html分割线居中代码(html分割线虚线设置)

Postman 返回信息

后台返回信息拆入成功:

html分割线居中代码(html分割线虚线设置)

后台返回信息

展示所有列表信息:

html分割线居中代码(html分割线虚线设置)

后台现实的信息

html分割线居中代码(html分割线虚线设置)

这里只完成了2个功能:

插入和搜索所有列表。还有一个模糊搜索,匹配。

明天继续。

创业项目群,学习操作 18个小项目,添加 微信:jjs406  备注:小项目

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 924072740@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.xmjzwang.com/440.html