项目2---十次方项目开发---后台--es---0

spring的事务:https://www.cnblogs.com/xd502djj/p/10940627.html

----------------------------------------------------------------------------------01------------------------------------------------------------------------------------

只要不是java操作都是9200,Java操作是9300

内容:

  

luncence:https://blog.csdn.net/cying90/article/details/84342587

---------------------------------------------------------------------------------02-------------------------------------------------------------------------------------

搜索的流程说明:

站内用的最多的。

数据的索引,数据的分词。

----------------------------------------------------------------------------03----------------------------------------------------------------------------------

es结构。

mongodb是数据库集合文件。

----------------------------------------------------------------------------04----------------------------------------------------------------------------------

es的安装。

win安装es。

第一步:解压

第二步:

java是9300其他是9200.

------------------------------------------------------------------------------05---------------------------------------------------------------------------------------

第一步:创建索引。创建索引是以put的方式提交的。

第二步:类型下添加文档,添加文档是post提交的。注意要在类型下添加文档。

索引:tensquare_elasticsearch

类型:article

文档:_id

查找:在索引类型下查找,查找是get的方式。

修改,没有就增加:修改是put的形式。

增加:

精确查找按照id查询:get方式提交。

条件查询:支持模糊查询。前提是分词的。s不代表spring。

模糊查询:模糊查询是对词条的模糊。

删除:

注意都是restful的风格的。

----------------------------------------------------------------------------06----------------------------------------------------------------------------------

安装head插件。

第一步:安装

   npm install

第二步:.....参照文档。

----------------------------------------------------------------------------07----------------------------------------------------------------------------------

跨域问题的解决:

连接:

----------------------------------------------------------------------------08----------------------------------------------------------------------------------

head的简单使用:

----------------------------------------------------------------------------09----------------------------------------------------------------------------------

ik分词器:

第一步:解压,改名为ik文件夹。

第二步:将ik文件夹扔到

就可以用了。

第三步:重启服务器。

第四步:进行测试。

再次测试:

---------------

ik分词如何加入词条:

第一步:在文件夹添加.dic文件。

第二步:

第三步:测试

----------------------------------------------------------------------------10----------------------------------------------------------------------------------

搜索微服务的开发:

第一步:新建模块

第二步:

引入破pom:

第三步:yml文件

server:
  port: 9007
spring:
  application:
    name: tensquare-search
  data:
    elasticsearch:
#      cluster-nodes: 192.168.79.129:9300
      cluster-nodes: 127.0.0.1:9300

第四步:写启动类

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

    @Bean
    public IdWorker idWorker(){
        return new IdWorker(1,1);
    }
}

做的功能:

----------------------------------------------------------------------------11----------------------------------------------------------------------------------

添加文章。

第一步:

type可以不用创建直接写。

注意这个实体类不用都展示出来,只要展示我们用的就可以。

第二步:写Dao

第三步:写一套

第四步:测试下,添加

成功:

----------------------------------------------------------------------------12----------------------------------------------------------------------------------

简单的搜索文章:

定义方法名自动的生成sql语句。

public interface SearchDao extends ElasticsearchRepository<Article,String> {

    Page<Article> findByTitleOrContentLike(String title, String content, Pageable pageable);
}

测试:

----------------------------------------------------------------------------13----------------------------------------------------------------------------------

elasticserach与mysql的同步问题:

我们自己存的话就自己保存,目前有logstash进行同步。

安装:

第一步:解压

进入:

第二步:输入命令

-e:直接写内容

-f:指定文件的路径

语句的意思事键盘输入什么输出什么。

----------------------------------------------------------------------------14----------------------------------------------------------------------------------

同步的问题:

第一步:

这个文件。

第二步:

放入:

完善模板:

input {
  jdbc {
	  # mysql jdbc connection string to our backup databse
	  jdbc_connection_string => "jdbc:mysql://192.168.244.136:3306/tensquare_article?characterEncoding=UTF8"
	  # the user we wish to excute our statement as
	  jdbc_user => "root"
	  jdbc_password => "123456"
	  # the path to our downloaded jdbc driver  
	  jdbc_driver_library => "D:\softWork\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
	  # the name of the driver class for mysql
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  jdbc_paging_enabled => "true"
	  jdbc_page_size => "50"
	  #以下对应着要执行的sql的绝对路径。
	  #statement_filepath => ""
	  statement => "SELECT id,title,content,state from  tb_article"
	  #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ESIP地址与端口
	  hosts => "127.0.0.1:9200" 
	  #ES索引名称(自己定义的)
	  index => "tensquare_article"
	  #自增ID编号
	  document_id => "%{id}"
	  document_type => "article"
  }
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}

第三步:

查看结果:

----------------------------------------------------------------------------15----------------------------------------------------------------------------------

logstash同步数据特征:

数据库少了数据,但是es不会少。

所以数据不要真的删除,es同步可以更新,不可以删除的。

----------------------------------------------------------------------------16----------------------------------------------------------------------------------

在docker中安装es:

第一步在docker安装es:

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

第二步:访问下测试

第三步:创建索引库

第四步:在java代码换地址。

第五步:添加文档:

这个是不能直接使用的。具体的解决办法看下一节课。

----------------------------------------------------------------------------17----------------------------------------------------------------------------------

宿主机可以使用9300.

第一步:进入到容器里面。

docker exec -it tensquare_es /bin/bash

第二步:

不能vi容器的配置文件,只能vi宿主机的配置文件。

拷贝文件到宿主机:退出容器拷贝不是停止容器。

docker cp tensquare_elasticsearch容器名称:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

前提是容器要启动了。

第三步:停止和删除容器。

第四步:重新创建容器

docker run -di --name=tensquare_elasticsearch -p 9200:9200 -p 9300:9300 -v
/usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch
.yml elasticsearch:5.6.8

第五步:修改yml文件

表示所有的ip都是可以访问的。

第六步:

重启。报错。

第七步:

第八步:重启es。重启虚拟机。

第九步:访问。

----------------------------------------------------------------------------18----------------------------------------------------------------------------------

docker的ik分词器的安装:

首先测试下是不是用分词器了:

第一步:

第二步:将ik分词传到宿主机器

第三步:复制到docker的es

docker cp ik tensquare_elasticsearch:/usr/share/elasticsearch/plugins
docker exec -it tensquare_elasticsearch /bin/bash

第四步骤:重启

docker restart tensquare_elasticsearch

第五步:测试

http://127.0.0.1:9200/_analyze?analyzer=ik_smart&pretty=true&text=%E6%88%91%E6%98%AF%E7%A8%8B%E5%BA%8F%E5%91%98

----------------------------------------------------------------------------19----------------------------------------------------------------------------------

head插件:

第一步:修改跨域

加跨域语句

第二步:

docker restart tensquare_elasticsearch

第三步:

docker run -di --name=tensquare_header -p 9100:9100 mobz/elasticsearch-head:5

第四步:

---------------------------------------------------------------------------20----------------------------------------------------------------------------------

ES有用的文章:

mapping:https://segmentfault.com/a/1190000019006317

https://blog.csdn.net/napoay/article/details/73100110#323-store

save:https://blog.csdn.net/u013089490/article/details/84323762

倒排索引:https://www.cnblogs.com/cjsblog/p/10327673.html

b+Tree:https://tech.souyunku.com/?p=9543

--------------------------

关于es的补充:

第一篇博客:https://segmentfault.com/a/1190000019006317

http://192.168.244.136:9200/website/_mapping
上面是插入数据自动生成的mapping,还有手动生成的mapping。这种自动或手动为index中的type建立的一种数据结构和相关配置,称为mapping。
mapping:当我们插入几条数据,让ES自动为我们建立一个索引

倒排索引正则化。mapping本质上就是index的type的元数据,决定了数据类型,建立倒排索引的行为,还有进行搜索的行为。

发布了308 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28764557/article/details/104093022
今日推荐