• Elasticsearch全文检索工具入门


      1 Elasticsearch全文检索工具入门:
      2     1.下载对应系统版本的文件
      3         elasticsearch-2.4.0.zip
      4         1.1运行elasticsearch-2.4.0\elasticsearch-2.4.0\bin\elasticsearch.bat文件
      5             访问 http://127.0.0.1:9200
      6         1.2ElasticSearch  插件安装 es head
      7             在命令窗口输入下面的命令:
      8                 %elasticsearch%/bin/plugin.bat install mobz/elasticsearch-head
      9                 就会下载可视化界面的插件
     10             访问 http://localhost:9200/_plugin/head/即可
     11     2.ElasticSearch基础数据架构的主要概念:
     12         2.1索引对象: 存储数据的表结构 ,任何搜索数据,存放在索引对象上
     13         2.2映射: 数据如何存放到索引对象上,需要有一个映射配置, 数据类型、是否存储、是
     14                   否分词 …
     15         2.3文档: 一条数据记录, 存在索引对象上
     16         2.3文档类型: 一个索引对象 存放多种类型数据, 数据用文档类型进行标识
     17         2.4编程: 建立索引对象 --- 建立映射 --- 存储数据【文档】 --- 指定文档类型进行搜索数
     18                   据【文档】
     19     3.新建 maven 项目测试Elasticsearch的检索功能
     20         3.1基于maven的pom导入坐标依赖
     21             <dependencies>
     22                 <dependency>
     23                     <groupId>org.elasticsearch</groupId>
     24                     <artifactId>elasticsearch</artifactId>
     25                     <version>2.4.0</version>
     26                 </dependency>
     27                 <dependency>
     28                         <groupId>junit</groupId>
     29                         <artifactId>junit</artifactId>
     30                         <version>4.12</version>
     31                 </dependency>
     32             </dependencies>
     33         3.2当直接在ElasticSearch建立文档对象时,如果索引不存在的,默认会自动创建,映射采用默认方式
     34            ElasticSearch 服务默认端口 9300
     35            Web 管理平台端口 9200
     36         3.3建立文档,自动创建索引
     37             建立测试类直接运行:
     38             // 创建索引对象(存储文档数据)
     39             @Test
     40             public void testCreateTable() throws Exception {
     41                 // 1.创建搜索服务器的对象
     42                 Client client = TransportClient
     43                         .builder()
     44                         .build()
     45                         .addTransportAddress(
     46                                 new InetSocketTransportAddress(InetAddress
     47                                         .getByName("127.0.0.1"), 9300));
     48                 // 2.建立json数据
     49                 XContentBuilder build = XContentFactory
     50                         .jsonBuilder()
     51                         .startObject()
     52                         .field("id", 1)
     53                         .field("title", "es索引的简单测试创建")
     54                         .field("content",
     55                                 "ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。")
     56                         .endObject();
     57                 // 3.建立文档对象
     58                 client.prepareIndex("table1", "serach", "1").setSource(build).get();
     59                 // 4.关闭连接
     60                 client.close();
     61             }
     62             // 搜索指定索引中的文章信息
     63             @Test
     64             public void testCreateTable() throws Exception {
     65                 // 1.创建搜索服务器的对象
     66                 Client client = TransportClient
     67                         .builder()
     68                         .build()
     69                         .addTransportAddress(
     70                                 new InetSocketTransportAddress(InetAddress
     71                                         .getByName("127.0.0.1"), 9300));
     72                 // 2.搜索数据
     73                 SearchResponse searchResponse = client.prepareSearch("table1")
     74                 .setTypes("serach").setQuery(QueryBuilders.matchAllQuery())
     75                 .get();
     76                 // 3.获取命中数,获取查询结果条数
     77                 SearchHits hits = searchResponse.getHits();
     78                 System.out.println(hits);
     79                 // 4.便利查询结果
     80                 Iterator<SearchHit> iterator = hits.iterator();
     81                 while(iterator.hasNext()){
     82                     //每一个查询的对象
     83                     SearchHit searchHit = iterator.next();
     84                     System.out.println(searchHit.getSourceAsString());//获取字符串的打印格式
     85                     System.out.println("title:"+searchHit.getSource().get("title"));
     86                 }
     87                 // 5.关闭连接
     88                 client.close();
     89             }
     90         3.4各种查询对象 Query  的使用
     91             ElasticSearch 支持所有 Lucene 查询,并对其进行简化封装
     92                 TermQuery 词条查询
     93                 WildcardQuery 模糊查询
     94                     使用 wildcardQuery 磨合查询 *任意字符串 ?任意单个字符
     95                 FuzzyQuery 相似度查询
     96                 BooleanQuery 布尔查询
     97                 QueryBuileders.queryStringQuery(搜索内容) 查询方法,对所有字段进行分词查询
     98         3.5ik分词器的安装与简单使用步骤:
     99             ElasticSearch 默认采用分词器, 单个字分词 ,效果很差
    100             下载网址  https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x
    101             插件安装步骤:
    102                 3.5.1解压缩下载的文件,执行mvn clean和mvn package(可以选择执行这两个命令,
    103                 如果文件夹中包含target文件夹则不需要进行这两个操作)
    104                 3.5.2复制解压文件中的target/release目录下除了1.10.0和1.10.0.zip结尾的所有文件到
    105                 es的插件包plugins/analysis-ik目录下面
    106                 3.5.3进入 target/release/config 目录将所有配置文件,复制到 %es%/config目录下面
    107                 3.5.4配置 elasticsearch.yml    在最后面一行添加    # index.analysis.analyzer.ik.type: "ik"即可
    108                 3.5.5重启 es
    109                 3.5.6访问http://localhost:9200/_analyze?analyzer=ik&pretty=true&text=我是中国人    -->OK
    110     4.Spring Data ElasticSearch入门
    111         4.1什么是 spring data elasticSearch ?
    112             Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch 操作 ,将原始操作
    113             elasticSearch 的客户端 API 进行封装
    114             官方网站:http://projects.spring.io/spring-data-elasticsearch/
    115         4.2创建maven项目并引入相关的jar坐标
    116             Maven 坐标
    117             <dependencies>
    118                 <dependency>
    119                     <groupId>org.springframework.data</groupId>
    120                     <artifactId>spring-data-elasticsearch</artifactId>
    121                     <version>2.0.4.RELEASE</version>
    122                 </dependency>
    123                 <dependency>
    124                     <groupId>org.elasticsearch</groupId>
    125                     <artifactId>elasticsearch</artifactId>
    126                     <version>2.4.0</version>
    127                 </dependency>
    128                 <dependency>
    129                         <groupId>junit</groupId>
    130                         <artifactId>junit</artifactId>
    131                         <version>4.12</version>
    132                 </dependency>
    133                 <dependency>
    134                     <groupId>org.springframework</groupId>
    135                     <artifactId>spring-test</artifactId>
    136                     <version>4.2.8.RELEASE</version>
    137                 </dependency>
    138                 <dependency>
    139                     <groupId>org.slf4j</groupId>
    140                     <artifactId>slf4j-log4j12</artifactId>
    141                     <version>1.7.12</version>
    142                 </dependency>
    143             </dependencies>
    144         4.3修改applicationContext.xml文件
    145             在 src/main/resources 下建立 applicationContext.xml 和 log4j.properties
    146             引入 spring data elasticsearch 名称空间
    147             <?xml version="1.0" encoding="UTF-8"?>
    148             <beans xmlns="http://www.springframework.org/schema/beans"
    149                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    150                 xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
    151                 xsi:schemaLocation="
    152                     http://www.springframework.org/schema/beans 
    153                     http://www.springframework.org/schema/beans/spring-beans.xsd
    154                     http://www.springframework.org/schema/data/elasticsearch
    155                     http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd">
    156                 <!-- 搜索DAO 扫描 -->
    157                 <elasticsearch:repositories base-package="cn.itcast.bos.index" />
    158                 <!-- 配置Client -->
    159                 <elasticsearch:transport-client id="client" cluster-nodes="127.0.0.1:9300"/>
    160                 <!-- 配置搜索模板  -->
    161                 <bean id="elasticsearchTemplate" 
    162                     class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
    163                     <constructor-arg name="client" ref="client" />
    164                 </bean>
    165             </beans>
    166         4.4 创建 domain、dao、service 包
    167             4.4.1:编写reporstory    extends    ElasticsearchReporstory(){}
    168             4.4.2: 索引和映射如何创建 --- 基于 spring data elasticsearch 注解
    169                     在使用 spring data elasticsearch 开发, 需要将索引和映射信息 配置实体类上面
    170                     @Document 文档对象 (索引信息、文档类型 )
    171                     @Id 文档主键 唯一标识
    172                     @Field 每个文档的字段配置(类型、是否分词、是否存储、分词器 )
    173     5.Spring Data ElasticSearch整合项目操作流程:
    174         5.1:在common_parent的pom.xml配置文件中导入相关jar包的坐标
    175             <!-- Elasticsearch相关的jar包 -->
    176             <dependencies>
    177                 <dependency>
    178                     <groupId>org.springframework.data</groupId>
    179                     <artifactId>spring-data-elasticsearch</artifactId>
    180                     <version>2.0.4.RELEASE</version>
    181                 </dependency>
    182                 <dependency>
    183                     <groupId>org.elasticsearch</groupId>
    184                     <artifactId>elasticsearch</artifactId>
    185                     <version>2.4.0</version>
    186                 </dependency>
    187                 </dependency>
    188             </dependencies>
    189         5.2:在bos_domain中操作实体类配置相关注解信息(需要在实体类 WayBill 对象,添加elasticsearch的索引和映射关系)
    190         5.3:配置applicationContext_elasticsearch.xml文件
    191             同上4.3的所有配置,只需改一些包名即可使用
    192         5.4:创建Dao来操作数据库,让其继承ElasticsearchReporstory即可进行下一步操作
    193             public interface ESRepository extends ElasticsearchRepository<WayBill, Integer> {}
    194         5.5:在service中注入Dao对象就可以使用它里面的一些相关方法
    195              @Document(indexName="domain",type="waybill")  //声明索引名称与类型
    196              @org.springframework.data.annotation.Id    //声明主键
    197              @Field(index=FieldIndex.not_analyzed,store=true,type=FieldType.Integer)    //声明该属性是否进行分词
    198              @Field(index = FieldIndex.analyzed, analyzer = "ik", searchAnalyzer = "ik", store = true, type = FieldType.String)
    199              //声明该注解使用ik分词器进行分词查询
    200         5.6    修改 Service 代码 注入
    201                 @Autowired
    202                 private ESRepository esr;
    203                 使用ElasticsearchRepository中的API来操作文档(也就是实体类)
    204         5.7    基于ElasticsearchRepository的条件查询是最重要的
    205             主要运用QueryBuilder中的BoolQueryBuilder来拼接查询的条件
    206             可以结合dategrid的load方法进行多条件的一个查询(must)
  • 相关阅读:
    UIWebView的使用
    ASP.NET自定义简单分页
    匿名方法、委托和Lambda表达式区分演示(图文解释)
    Windows Phone开发(11):常用控件(下)
    来自CodeCanyo的15个优秀移动应用和工具
    JDK、J2EE、J2SE、J2ME概念详解
    配置Eclipse 实现按任意键代码自动补全
    ASP.NET验证码
    asp.net 压缩解压缩zip文件
    HOOK使用:全局键盘钩子
  • 原文地址:https://www.cnblogs.com/yshang/p/8146326.html
Copyright © 2020-2023  润新知