ElasticSearch 入门笔记1

1. 起步

1. 建demo工程,看文档,做典型demo

2. 资源列表:

http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html

3. 启动:

elasticsearch.bat

启动完成后

用ARC工具访问 http://localhost:9200/

这说明你的ELasticsearch集群已经启动并且正常运行,接下来我们可以开始各种实验了。

https://imququ.com/post/elasticsearch.html 用ElasticSearch进行全文搜索示例

2. 安装分词器

  编译IK分词器

E:\002.tools\apache-maven-3.0.4\bin\mvn.bat package

编译过程中遇到 早先配置的oschina镜像停止了

用 <url>http://repo2.maven.org/maven2/</url>

修改 C:\Users\chen.simon\.m2 settings.xml配置

如果一切顺利,在 target/releases/ 目录下可以找到编好的文件。将其解压并拷到 ~/es_root 对应目录:

mkdir -p ~/es_root/plugins/ik/
unzip target/releases/elasticsearch-analysis-ik-1.9.0.zip -d ~/es_root/plugins/ik/

elasticsearch-analysis-ik 的配置文件在 ~/es_root/plugins/ik/config/ik/ 目录,很多都是词表,直接用文本编辑器打开就可以修改,改完记得保存为 utf-8 格式。

现在再启动 Elasticsearch 服务,如果看到类似下面这样的信息,说明 IK Analysis 插件已经装好了:

java.lang.IllegalArgumentException: Plugin [analysis-ik] is incompatible with Elasticsearch [2.4.0]. Was designed for version [2.3.0]

晕  这个版本不兼容elasticsearch2.4.0

去github重新找

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v1.10.0/elasticsearch-analysis-ik-1.10.0.zip

这个是匹配的  并且这个是编译好的 无需mvn package  直接解开用

将他source包拿下来 以便以后使用

增加java启动参数 以便调试

在elasticsearch.bat中 "%JAVA_HOME%\bin\java开头的这一行 %JAVA_OPTS%后面 -Xdebug -Xrunjdwp:transport=dt_socket,address=8500,server=y,suspend=y

elasticsearch所在路径 不能有含有空格 否则会出现诡异的权限问题(空格转成了%20了)

配置同义词

Elasticsearch 自带一个名为 synonym 的同义词 filter。为了能让 IK 和 synonym 同时工作,我们需要定义新的 analyzer,用 IK 做 tokenizer,synonym 做 filter。听上去很复杂,实际上要做的只是加一段配置。

打开 ~/es_root/config/elasticsearch.yml 文件,加入以下配置:

index:
  analysis:
    analyzer:
      ik_syno:
          type: custom
          tokenizer: ik_max_word
          filter: [my_synonym_filter]
      ik_syno_smart:
          type: custom
          tokenizer: ik_smart
          filter: [my_synonym_filter]
    filter:
      my_synonym_filter:
          type: synonym
          synonyms_path: analysis/synonym.txt

以上配置定义了 ik_syno 和 ik_syno_smart 这两个新的 analyzer,分别对应 IK 的 ik_max_word 和 ik_smart 两种分词策略。根据 IK 的文档,二者区别如下:

ik_max_word:会将文本做最细粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、民、共和国、共和、和、国国、国歌」,会穷尽各种可能的组合;
ik_smart:会将文本做最粗粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、国歌」;

ik_syno 和 ik_syno_smart 都会使用 synonym filter 实现同义词转换。为了方便后续测试,建议创建~/es_root/config/analysis/synonym.txt 文件,输入一些同义词并存为 utf-8 格式。例如:

ua,user-agent,userAgent
js,javascript
谷歌=>google
 
----
准备测试
 

3. 基本概念

 

4. 创建index

响应:

这就创建了一个simon的index  相当于mysql的database    再次发送这个请求 服务器就回400 bad request

注意此时http method 为put

如果使用get的http method 便能查询到此index的信息:

相关文档:

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/indices-create-index.html

5. 创建mapping

Type 不用单独创建,在创建 Mapping 时指定就可以。Mapping 用来定义 Document 中每个字段的类型、所使用的 analyzer、是否索引等属性,非常关键。创建 Mapping 的代码示例如下:

url http://localhost:9200/simon/_mapping/article

{
    "properties": {
        "title": {
            "type": "string",
            "term_vector": "with_positions_offsets",
            "analyzer": "ik_syno",
            "search_analyzer": "ik_syno"
        },
        "content": {
            "type": "string",
            "term_vector": "with_positions_offsets",
            "analyzer": "ik_syno",
            "search_analyzer": "ik_syno"
        },
        "slug": {
            "type": "string"
        },
        "tags": {
            "type": "string",
            "index" : "not_analyzed"
        },
        "update_date": {
            "type" : "date",
            "index" : "not_analyzed"
        }

    }
}

注意: 如果报 elasticseatch analyzer [ik_syno]  not found for field  则需要检查elasticsearch.yml文件中是否配置了此分析器

响应:

6. 加入数据

url http://localhost:9200/simon/article/1 方法:put

1表示这条数据的id

报文:

{
    "title" : "什么是 JS?",
    "slug" :"what-is-js",
    "tags" : ["JS", "JavaScript", "TEST"],
    "content" : "JS 是 JavaScript 的缩写!",
    "update_date" : "2015-12-15T13:05:55Z"
}

如何不指定id ,自动生成

http://localhost:9200/simon/article/_search 这个可以查到加入的数据

简单的查询也可以  http://localhost:9200/simon/article/_search?q=js

更复杂的查询就需要 query dsl了

时间: 2024-10-13 23:58:10

ElasticSearch 入门笔记1的相关文章

elasticsearch入门笔记

安装 https://es.xiaoleilu.com/010_Intro/10_Installing_ES.html 下载elasticsearch https://www.elastic.co/downloads/elasticsearch 下载kibana https://www.elastic.co/downloads/kibana 安装X-Pack https://www.elastic.co/downloads/x-pack 执行 bin/x-pack/setup-passwords

ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套

这是ElasticSearch 2.4 版本系列的第六篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 ElasticSearch入门 第三篇:索引 ElasticSearch入门 第四篇:使用C#添加和更新文档 ElasticSearch入门 第五篇:使用C#查询文档 ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套 在ElasticSearch中,使用JSON结构来存储数据,

MySQL入门笔记(一)

MySQL入门笔记(二) 一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name; ??上述代码中DATABASE和SCHEMA完全相同,可任选一个(花括号内的参数为任选其一): ??添加IF NOT EXISTS的作用则是,若新建数据库的名称与已有数据库名称冲突,则产

Django入门笔记【一】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/ *该笔记将使用一个关于投票网络应用(poll application)的例子来阐述Django的用法. 1. 查看Django是否安装及版本 1 $ python -c "import django; print(django.get_version())" 2. 创建一个项目(project) 通过cd方式进入自创目录,然后运行: 1 $ django-admin startprojec

嵌入式OS入门笔记-以RTX为案例:十.Keil的RTX调试支持

嵌入式OS入门笔记-以RTX为案例:十.Keil的RTX调试支持 调试(debug)是软件开发的一个重要环节,对于嵌入式开发而言这个环节其实比较依赖一些硬件资源(硬件debugger)的支持.传统的嵌入式系统的调试比较依赖断点(breakpoint)和单步调试(single step through).而 ARM cortex-M 系列的芯片其实有很强的CoreSight片上调试支持,实际上就是一个小的调试硬件,作为ARM的标准,内嵌在ARM的芯片里.在ARM自家的调试器ULINK-pro等的帮

Ajax 入门笔记

AJAX =Asynchronous Javascript + XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. XMLHttpRequest 是 AJAX 的基础.XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 1:创建 XMLHttpRequest 对象 为

iBatis 入门笔记

iBatis简介 iBatis是一个"半自动"的轻量级O/R Mapping框架. O/R Mapping是指对象与数据库之间的映射,而iBatis就是这样一个映射器,映射器的主要作用是在对象和数据库之间搬运数据,同时保证对象.数据库和映射器之间相互独立. 通过O/R Mapping你将不用再面对那一堆令人厌恶的JDBC代码,为一堆打开连接.关闭连接的代码而眼花头昏. 何为"半自动"?    这里的半自动是与Hibernate这样的O/R Mapping方案对比得出

Hive入门笔记-----架构以及应用介绍

Hive这个框架在Hadoop的生态体系结构中占有及其重要的地位,在实际的业务当中用的也非常多,可以说Hadoop之所以这么流行在很大程度上是因为Hive的存在.那么Hive究竟是什么,为什么在Hadoop家族中占有这么重要的地位,本篇文章将围绕Hive的体系结构(架构).Hive的操作.Hive与Hbase的区别等对Hive进行全方面的阐述. 在此之前,先给大家介绍一个业务场景,让大家感受一下为什么Hive如此的受欢迎: 业务描述:统计业务表consumer.txt中北京的客户有多少位?下面是

JAVA数据库编程(JDBC技术)-入门笔记

本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下.我现在很迫不及待用JAVA想来实现以下对数据库的增删改查.想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单.现在面