• ElasticSearch


    官网: https://www.elastic.co/products/elasticsearch

    下载后的解压目录

    bin 存放 elasticSearch 运行命令

    config 存放配置文件

    lib 存放 elasticSearch 运行依赖 jar 包

    modules 存放 elasticSearch 模块

    plugins 存放插件

    运行 elasticSearch/bin/elasticsearch.bat 文件

    访问 localhost:9200

    ElasticSearch  插件安装 es head

    %elasticsearch%/bin/plugin.bat install mobz/elasticsearch-head

    访问 http://localhost:9200/_plugin/head/

    ElasticSearch  基本操作入门

    全文检索: 针对文本中每个词,创建词条建立索引,进行搜索。

    索引对象: 存储数据的表结构 ,任何搜索数据,存放在索引对象上.

    映射: 数据如何存放到索引对象上,需要有一个映射配置, 数据类型、是否存储、是否分词等

    文档: 一条数据记录, 存在索引对象上

    文档类型: 一个索引对象 存放多种类型数据, 数据用文档类型进行标识

    建立索引对象 --- 建立映射 --- 存储数据【文档】 --- 指定文档类型进行搜索数据【文档】

    新建 maven 项目

     基于 maven 的 pom 导入坐标依赖

    ElasticSearch 服务默认端口 9300
    Web 管理平台端口 9200

    建立文档, 自动创建索引(当直接在 ElasticSearch 建立文档对象时,如果索引不存在的,默认会自动创建,映射采用默认方式)

    访问:http://localhost:9200/_plugin/head/后看到bolg1

     自动创建索引映射

    搜索文档数据

    查询数据 主要依赖 QueryBuilder 对象 ,可以通过 QueryBuilders 获取

    boolQuery() 布尔查询,可以用来组合多个查询条件
    fuzzyQuery() 相似度查询
    matchAllQuery() 查询所有数据
    regexpQuery() 正则表达式查询
    termQuery() 词条查询
    wildcardQuery() 模糊查询

    各种查询对象 Query  的使用

    ElasticSearch 支持所有 Lucene 查询,并对其进行简化封装

    TermQuery 词条查询

    WildcardQuery 模糊查询


    FuzzyQuery 相似度查询


    BooleanQuery 布尔查询

    1、ElasticSearch 提供 QueryBuileders.queryStringQuery(搜索内容) 查询方法,对所有字段进行分词查询

    只想查询 content 里包含全文 ,使用 wildcardQuery 磨合查询 *任意字符串 ?任意单个字符

    如果没有词条包含全文,就会查询不到

    查询 content 词条为“搜索” 内容,使用 TermQuery

    如果没有"搜索"这个词条,就会搜索不到

    IK  分词器和 ElasticSearch  集成使用

    ElasticSearch 默认采用分词器, 单个字分词 ,效果很差

    下载  https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x

    解压后

    进入 target/release 目录

    将下列文件 ,拷贝到 %es%/plugins/analysis-ik

    进入 target/release/config 目录,将所有配置文件,复制 %es%/config 下

    配置 elasticsearch.yml

    重启 es

    访问:http://localhost:9200/_analyze?analyzer=ik&pretty=true&text=%E6%88%91%E7%88%B1java

    在 ElasticSearch 没有索引情况下,插入文档,默认创建索引和索引映射 (无法使用 ik分词器)

    创建索引

    映射相关操作

    调用 client.admin().indices().putMapping(mapping).get();

     文档相关操作

    建立文档

    直接在 XContentBuilder 中构建 json 数据,建立文档

    对一个已经存在对象,转换为 json ,建立文档

    导入jackson转换开发包

    <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
    </dependency>
    <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
    </dependency>
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.1</version>
    </dependency>
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.1</version>
    </dependency>
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.8.1</version>
    </dependency>

    修改文档

    直接使用 update

    删除文档

    查询文档分页操作

    批量向数据表 插入 100 条记录

    分页查询(searchRequestBuilder 的 setFrom【从 0 开始】 和 setSize【查询多少条】方法实现)

    查询结果高亮显示

    对结果的高亮片段做拼接处理,替换原有内容

  • 相关阅读:
    好文章记录
    求职经历
    C正确初始化方式
    linux 常用命令
    MYSQL查找从小到大排列第90%个位置的数据
    最好的单例模式
    <%= %>和${}使用差异
    后台和jsp乱码处理
    浏览器下载文件
    文件下载
  • 原文地址:https://www.cnblogs.com/learnjfm/p/7496532.html
Copyright © 2020-2023  润新知