ELK有坑,千万别踩( 二 )

  • Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index) 。查找数据的时候,直接查找该索引 。倒排索引(反向索引)原始文档创建倒排索引列表倒排索引创建索引的流程:1) 首先把所有的原始数据进行编号,形成文档列表2) 把文档数据进行分词,得到很多的词条,以词条为索引 。保存包含这些词条的文档的编号信息 。搜索的过程:当用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户要搜索的所有词条,然后拿着这些词条去倒排索引列表中进行匹配 。找到这些词条就能找到包含这些词条的所有文档的编号 。然后根据这些编号去文档列表中找到文档
  • 所以,Elastic 数据管理的顶层单位就叫做 Index(索引) 。它是单个数据库的同义词 。每个 Index (即数据库)的名字必须是小写 。
  • 下面的命令可以查看当前节点的所有 Index 。
    $ curl -X GET 'http://localhost:9200/_cat/indices?vindex 索引 相当于数据库里的“数据库” 他是我们存储和索引关联数据的地方
    type 类数据 将一类的数据放到一起 相当于数据库中的“表”
    id 相当于数据库表中的一行
    pertty 在网页中格式化输出响应内容
    elasticsearch的操作方法官方教程在这里,我觉得这个更加实用官方教程 https://www.cnblogs.com/chuyuan/p/11380744.html

    # 增加http://10.5.103.176:9200/database1/table1 {"name": "doudou","age": 4.5,"weight": 20,}# 查询# 以上方法是正确的但是再增加一个table2的是否发生如下报错http://10.5.103.176:9200/database1/table2{"name": "dianche1","weight": 1000}原因是elastic search在6.x版本调整了, 一个index只能存储一种type 。
    GET /atguigu/_mApping1. 检索文档MySQL : select * from user where id = 1ES : GET /atguigu/doc/1响应结果{"_index" :"megacorp","_type" :"employee","_id" :"1","_version" : 1,"found" :true,"_source" :{"first_name" :"John","last_name" :"Smith","age" :25,"about" :"I love to go rock climbing","interests":[ "sports", "music" ]}}2.简单检索Mysql : select * from userES : GET /megacorp/employee/_search3.全文检索ES : GET /megacorp/employee/_search?q=haha查询出所有文档字段值为haha的文档4.搜索(模糊查询)ES : GET /megacorp/employee/_search?q=hello查询出所有文档字段值分词后包含hello的文档5.聚合PUT atguigu/_mapping/doc{"properties": {"interests": {"type": "text","fielddata": true}}}elasticsearch-head的安装ealsticsearch只是后端提供各种api,那么怎么直观的使用它呢?elasticsearch-head将是一款专门针对于elasticsearch的客户端工具,是es的集群管理工具、数据可视化、增删改查工具 。相关详细的教程在这里1 https://www.sojson.com/blog/85.html2 https://www.cnblogs.com/xuwenjin/p/8792919.html3 https://blog.csdn.net/huwei2003/article/details/40581143
    一、下载head插件https://github.com/mobz/elasticsearch-head二、解压到任意目录注意:为避免找不到,一定要和elasticsearch的安装目录区分开三、安装Node.js因为head是一个Node.js项目 。所以,如果没有安装nodejs需要先安装Node.js32位安装包下载地址: https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.tar.gz64位安装包下载地址: https://nodejs.org/dist/v4.4.3/node-v4.4.3-x64.tar.gz检测PATH环境变量是否配置了Node.js,打开命令行输入命令"which npm",输出如下结果:/usr/bin/npmwget https://nodejs.org/dist/latest-v8.x/node-v8.16.0.tar.gztar xf node-v8.16.0.tar.gzcd node-v8.16.0./configure --prefix=/usr/local/node-v8.16make -j 8 && make install添加环境变量vim /etc/profile################nodejs###############export NODE_HOME=/usr/local/node-v8.16export PATH=$PATH:$NODE_HOME/binsource /etc/profilenode -vv8.16.0npm -v6.4.1四、安装npm yum install npm -y五、es-head安装:解压源码包:elasticsearch-head.tar.gz启动:cd /usr/local/src/elasticsearch-headnpm run start &访问地址是http://{你的ip地址}:9200/_plugin/head/在浏览器中输入:这台机器的ip+端口http://10.5.2.220:9100/
    ELK有坑,千万别踩

    文章插图
     
    问题解决:在elasticsearch中没有当天的索引
    头一天使用过的bj日志第二天无法收集到,原因是昨天logstash已经收集过一遍,就被打过了标签,今天再使用的话,如果这个日志是不再增加的就不会被收集,因为日志中没有新的内容进来,解决方法如下:


    推荐阅读