Elasticsearch全文搜索技术之二kibana的简介和使用

这篇具有很好参考价值的文章主要介绍了Elasticsearch全文搜索技术之二kibana的简介和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,课程回顾
2,本章重点
3,具体内容

3.1 kibana的简介和使用
简介:
Kibana 是通向 Elastic 产品集的窗口。 它可以在 Elasticsearch 中对数据进行视觉探索和实时分析。 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索,查看,用来交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
解压配置:
下载上传文件到虚拟机
解压:
tar -xzvf kibana-6.4.0-linux-x86_64.tar.gz -C /usr/
改名:
mv /usr/kibana-6.4.0-linux-x86_64/ /usr/kibana
配置环境变量:
vim /etc/profile
source /etc/profile
修改配置:
cd /usr/kibana
vim config/kibana.yml
:2 端口号 :7 主机IP :28 es url地址

  启动访问(不兼容360浏览器):  
             kibana  (配置过环境变量,非守护运行)   ctrl+c 直接关闭
             kibana  &  (守护方式运行)  关闭麻烦点
             ps -ef |grep kibana    查找进程  
             kill -9   xxxx  杀死进程

启动完毕,显示:
server running at http://192.168.23.211:5601
3.2 创建,修改和删除索引及数据的增删改查:
数据类型
核心类型(Core datatype)
字符串:string,string类型包含 text 和 keyword。

text:该类型被用来索引长文本,在创建索引前会将这些文本进行分词,转化为词的组合,建立 索引;允许es来检索这些词,text类型不能用来排序和聚合。例如电子邮件主体部分或者一款产品的介绍

keyword:该类型不需要进行分词,可以被用来检索过滤、排序和聚合, 可以满足电子邮箱地址、主机名、状态码、邮政编码和标签等数据的要求。

数值型:long、integer、short、byte、double、float

日期型:date

布尔型:boolean

二进制型:binary
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
索引的管理:
创建索引的语法
PUT /my_index
{
  “settings”: { … any settings … },
  “mappings”: {
    “type_one”: { … any mappings … },
    “type_two”: { … any mappings … },//6.0之前的版本可以
    …
  }
}
mappings: 映射(Mapping) 相当于数据表的表结构

number_of_shards:每个索引的主分片数,这个配置在索引创建后不能修改。默认值为5
number_of_replicas:每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
创建索引的示例
 
PUT /index_hr
{    
    "settings":{
     "number_of_shards":3,
     "number_of_replicas":1
    },
    "mappings":{
     "emp_type":{
     "properties":{
     "empno":{
     "type":"integer"
     },
     "ename":{
     "type":"keyword"
     },
     "job":{
     "type":"keyword"
     },
     "salary":{
     "type":"double"
     },
     "deptno":{
     "type":"integer"
     },
     "hiredate":{
     "type":"date"
     }
     }
     }
    }
}
 
成功返回:
{"acknowledged":true,"shards_acknowledged":true,"index":"my_index"}

 GET _all/   查看所有索引
 GET _all/_settings   查看索引配置

创建索引时如果503(master_not_discovered_exception)
删除集群各节点下的data下的数据
rm -rf  /usr/elasticsearch/data/*
重启集群
    
2、修改索引
PUT /my_index/_settings
{
  "number_of_replicas": 1
}
{"acknowledged":true}

3、删除索引

DELETE /my_index    //删除单个索引
DELETE /index_one,index_two  //删除多个索引
DELETE /index_*   //删除以index_开头的索引
DELETE /_all    //删除所有索引
    {"acknowledged":true}
可以设置下面的属性,使DELETE /_all 失效,必须指定索引名称,才可以删除。
elasticsearch.yml
action.destructive_requires_name: true

数据管理:
1,插入数据
指定ID插入:
post 192.168.23.30:9200/my_index/my_doc/1
{
“my_field”:“aaa”
}

返回:
{"_index":"my_index","_type":"my_type","_id":"1","_version":1,"result":"created","_shards":{"total":1,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
     不指定ID插入:

 
返回:
{"_index":"my_index","_type":"my_type","_id":"s40HiGwBg5JLnGO8RVwg","_version":1,"result":"created","_shards":{"total":1,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
2,查询数据:
   查询所有
     /index_hr/_search   注意传递的参数{}	

带参数查询:
  get  192.168.23.30:9200/index_hr/_search?q=ename:lisi

  指定id查询:
     get  192.168.23.30:9200/index_hr/emp_type/2

3,更新数据
根据ID更新

post 192.168.182.66:9200/index_hr/emp_type/1

   自动生成ID更新
post   192.168.23.30:9200/my_index/my_type/s40HiGwBg5JLnGO8RVwg

4 ,删除数据
根据id删除

delete 192.168.182.66:9200/index_hr/emp_type/1
再次查询
{“_index”:“my_index”,“_type”:“my_type”,“_id”:“s40HiGwBg5JLnGO8RVwg”,“found”:false}

3.7 springboot整合es
pom.xml(springboot版本不使用最新的 建议:2.1.6.RELEASE)


org.springframework.boot
spring-boot-starter-data-elasticsearch

  application.properties 配置:

spring.data.elasticsearch.cluster-name=my-application
#9200 http请求端口
#9300 java 链接es的端口
spring.data.elasticsearch.cluster-nodes=192.168.23.81:9300

  entity:

package com.aaa.sbm.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

import java.util.Date;

/**

  • fileName:Order

  • description:

  • author:zz

  • createTime:2019/8/16 9:39

  • version:1.0.0
    */
    @Document(indexName =“index_order”,type = “order_type”,shards = 3,replicas = 1)
    public class Order {

    @Id
    private long id;
    private String orderNo;
    private String orderName;
    private String orderTime;
    private Integer customId;

    public long getId() {
    return id;
    }

    public void setId(long id) {
    this.id = id;
    }

    public String getOrderNo() {
    return orderNo;
    }

    public void setOrderNo(String orderNo) {
    this.orderNo = orderNo;
    }

    public String getOrderName() {
    return orderName;
    }

    public void setOrderName(String orderName) {
    this.orderName = orderName;
    }

    public String getOrderTime() {
    return orderTime;
    }

    public void setOrderTime(String orderTime) {
    this.orderTime = orderTime;
    }

    public Integer getCustomId() {
    return customId;
    }

    public void setCustomId(Integer customId) {
    this.customId = customId;
    }

    @Override
    public String toString() {
    return “Order{” +
    “id=” + id +
    “, orderNo='” + orderNo + ‘’’ +
    “, orderName='” + orderName + ‘’’ +
    “, orderTime=” + orderTime +
    “, customId=” + customId +
    ‘}’;
    }
    }

dao:
package com.aaa.sbm.esdao;

import com.aaa.sbm.entity.Order;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/**

  • fileName:OrderEsDao
  • description:
  • author:zz
  • createTime:2019/8/16 9:53
  • version:1.0.0
    */
    public interface OrderEsDao extends ElasticsearchRepository<Order,Long> {
    }

service:

package com.aaa.sbm.service;

import com.aaa.sbm.entity.Order;

import java.util.List;

/**

  • fileName:OrderService

  • description:

  • author:zz

  • createTime:2019/8/16 9:59

  • version:1.0.0
    */
    public interface OrderService {

    /**

    • 带参查询order列表
    • @param param
    • @return
      */
      List getList(String param,int type);

    /**

    • 向索引中添加数据
    • @param order
    • @return
      /
      int save(Order order);
      /
      *
    • 向索引中修改数据
    • @param order
    • @return
      /
      int update(Order order);
      /
      *
    • 向索引中删除数据
    • @id
    • @return
      */
      int delete(long id);
      }

package com.aaa.sbm.service;

import com.aaa.sbm.entity.Order;
import com.aaa.sbm.esdao.OrderEsDao;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**

  • fileName:OrderServiceImpl

  • description:

  • author:zz

  • createTime:2019/8/16 10:29

  • version:1.0.0
    */
    @Service
    public class OrderServiceImpl implements OrderService {

    @Autowired
    private OrderEsDao orderEsDao;

    @Override
    public List getList(String param,int type) {

     QueryBuilder queryBuilder = null;
     if(type==0){
         //查询所有
         queryBuilder = QueryBuilders.matchAllQuery();
     }else if(type==1&&!StringUtils.isEmpty(param)){ //查询匹配的单个列的值
         //类似于mybatis中   orderName =#{param}
         queryBuilder = QueryBuilders.matchQuery("orderName",param);
     }else if(type==2&&!StringUtils.isEmpty(param)){//查询order中所有为字符串的匹配值
         // 类似于mybatis中   (orderNo =#{param}  or orderName =#{param})
         queryBuilder = QueryBuilders.multiMatchQuery(param,"orderNo","orderName",);
     }else if(type==3&&!StringUtils.isEmpty(param)){//单列模糊查询
         //类似于mybatis中   orderName like '%${param}%'
         queryBuilder = QueryBuilders.wildcardQuery("orderName","*"+param+"*");
     }
     //获取order对象迭代集合
     Iterable<Order> search = orderEsDao.search(queryBuilder);
     //返回迭代器
     Iterator<Order> iterator =   search.iterator();
     //定义返回对象
     List<Order>  orders = new ArrayList<>();
     //迭代对象
     while(iterator.hasNext()){
         orders.add(iterator.next());
     }
     return orders;
    

    }

    @Override
    public int save(Order order) {
    //向es中存储对象
    Order rorder = orderEsDao.save(order);
    if(rorder!=null)
    return 1;
    return 0;
    }

    @Override
    public int update(Order order) {
    //向es中存储对象
    Order rorder = orderEsDao.save(order);
    if(rorder!=null)
    return 1;
    return 0;
    }

    @Override
    public int delete(long id) {
    try {
    orderEsDao.deleteById(id);
    return 1;
    }catch (Exception e){
    e.printStackTrace();
    }
    return 0;
    }
    }

controller:
package com.aaa.sbm.controller;

import com.aaa.sbm.entity.Order;
import com.aaa.sbm.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**

  • fileName:OrderController

  • description:

  • author:zz

  • createTime:2019/8/16 10:59

  • version:1.0.0
    */
    @RestController
    public class OrderController {

    @Autowired
    private OrderService orderService;

    /**

    • es的order 索引查询
    • @param name
    • @param type
    • @return
      */
      @RequestMapping(“orderList”)
      public Object list(@RequestParam(required = true,defaultValue =“”) String name,@RequestParam(required = true,defaultValue =“0”) Integer type){
      return orderService.getList(name,type);
      }

    /**

    • order索引添加
    • @param order
    • @return
      */
      @RequestMapping(“orderAdd”)
      public Object add(Order order){
      return orderService.save(order);
      }

    /**

    • order索引更新
    • @param order
    • @return
      */
      @RequestMapping(“orderUpdate”)
      public Object update(Order order){
      return orderService.save(order);
      }

    /**

    • order索引值的删除
    • @param id
    • @return
      */
      @RequestMapping(“orderDelete”)
      public Object delete(Long id){
      return orderService.delete(id);
      }

}

启动类:
package com.aaa.sbm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

@SpringBootApplication
@MapperScan(“com.aaa.sbm.dao”)
@EnableElasticsearchRepositories(“com.aaa.sbm.esdao”)
public class SpringbootMabatisApplication {

public static void main(String[] args) {
    SpringApplication.run(SpringbootMabatisApplication.class, args);
}

}

测试
http://localhost:8888/orderList
//查询时,参数为小写
http://localhost:8888/orderList?name=orderb&type=1
http://localhost:8888/orderList?name=ord10002&type=2
http://localhost:8888/orderList?name=orderb&type=3

http://localhost:8888/orderAdd?id=4&orderNo=ord100022&orderName=orderaa&orderTime=2019-08-16&customId=2

http://localhost:8888/orderUpdate?id=4&orderNo=ord100022&orderName=orderaa&orderTime=2019-08-16&customId=2

http://localhost:8888/orderDelete?id=4

4,知识点总结
5,本章面试题文章来源地址https://www.toymoban.com/news/detail-476047.html

到了这里,关于Elasticsearch全文搜索技术之二kibana的简介和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch全文搜索引擎

    Elasticsearch全文搜索引擎 Elasticsearch简介 windows平台下安装ES 学习ES的预备知识 ES索引操作 ES文档操作 ES高级查询 Golang操作ES起步 Golang操作ES索引 Golang操作ES文档 Golang ES高级查询 Gin集成ES

    2024年02月09日
    浏览(48)
  • 【Elasticsearch】全文搜索

    全文搜索是ES的关键特性之一,平时我们使用SQL的like语句,搜索一些文本、字符串是否包含指定的,但是如果两篇文章,都包含我们的,具体那篇文章内容的相关度更高? 这个SQL的like语句是做不到的,更别说like语句的性能问题了。 ES通过分词处理、相关度计算

    2024年02月09日
    浏览(43)
  • SpringBoot Elasticsearch全文搜索

    全文搜索(检索),工作原理:计算机索引程序,扫描文章中的每一个词,对每一个词建立一个索引,指明出现次数和位置。查询时通过索引进行查找,类似于查字典。 因为是通过索引在查,速度较于通过sql查,会快很多。 具体过程如下: 1、建文本库 2、建立索引 3、执行

    2024年02月03日
    浏览(58)
  • ElasticSearch中全文搜索(单词搜索、多次搜索、组合搜索和权重搜索)

    全文搜索两个最重要的方面是: 相关性(Relevance) 它是评价查询与其结果间的相关程度,并根据这种相关程度对结果排名的一种能力,这种计算方式可以是 TF/IDF 方法、地理位置邻近、模糊相似,或其他的某些算法。 分词(Analysis) 它是将文本块转换为有区别的、规范化的

    2024年02月06日
    浏览(45)
  • 全文搜索引擎 Elasticsearch详解

    Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的

    2023年04月22日
    浏览(43)
  • 关于Elasticsearch全文搜索引擎

    我们可以把它简称为ES,但是搜索它的资料时(例如百度)还是使用Elasticsearch进行搜索更准确, 这个软件不再是SpringCloud提供的,它也不针对微服务环境的项目来开发 Elasticsearch和redismysql一样,不仅服务于java语言,其它语言也可以使用,它的功能也类似一个数据库,能高效的从

    2024年02月05日
    浏览(60)
  • Elasticsearch的全文搜索与匹配

    Elasticsearch是一个开源的搜索和分析引擎,基于Lucene库,用于实现全文搜索和实时分析。它具有高性能、高可扩展性和高可用性,适用于大规模数据的搜索和分析。Elasticsearch的核心功能包括文档存储、搜索引擎、分析引擎和数据可视化。 Elasticsearch的全文搜索功能是其最重要的

    2024年02月22日
    浏览(44)
  • 开源的全文搜索引擎Elasticsearch

    Elasticsearch是一个开源的全文搜索引擎,可以实现快速、实时的数据搜索和分析。它是基于Apache Lucene的搜索引擎库开发而来,提供了一个分布式、多租户的全文搜索引擎平台,能够支持海量数据的实时检索、聚合分析和可视化展示。 Elasticsearch 的主要特点包括: 分布式架构:

    2024年02月08日
    浏览(48)
  • Elasticsearch 全文搜索引擎 ---- IK分词器

            原理:分词的原理:二叉树                  首先讲一下为什么要出这个文章,前面我们讲过分词方法: 中文分词搜索 pscws (感兴趣的同学可以去爬楼看一下),那为什么要讲 IK分词 ?最主要的原因是:pscws分词 颗粒度 不如IK分词的颗粒度高,现在的需求

    2024年02月10日
    浏览(52)
  • Elasticsearch的全文搜索和自然语言处理

    Elasticsearch是一个开源的搜索和分析引擎,基于Lucene库,具有高性能、可扩展性和实时性。它广泛应用于企业级搜索、日志分析、实时数据处理等领域。本文将涵盖Elasticsearch的全文搜索和自然语言处理相关知识,包括核心概念、算法原理、最佳实践和实际应用场景。 2.1 Elast

    2024年02月21日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包