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的信息:

查询index

http://localhost:9200/_cat/indices?v

GET

相关文档:

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了

7. 其他

查询所有index

http://localhost:9200/_cat/indices?v

ElasticSearch 入门笔记1的更多相关文章

  1. elasticsearch入门笔记

    安装 注意:elasticsearch需要非ROOT用户启动 https://es.xiaoleilu.com/010_Intro/10_Installing_ES.html 下载elasticsea ...

  2. Elasticsearch入门学习重点笔记

    原文:Elasticsearch入门学习重点笔记 必记知识点 Elasticsearch可以接近实时的搜索和存储大量数据.Elasticsearch是一个近实时的搜索平台.这意味着当你导入一个文档并把 ...

  3. Spring Boot 快速入门笔记

    Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...

  4. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  5. ElasticSearch 入门总结

    ElasticSearch 入门 本篇为 ElasticSearch 入门学习总结笔记,课程视频地址:ElasticSearch 入门 一.ElasticSearch 简介 1.1.什么是Elasti ...

  6. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  7. ES6入门笔记

    ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...

  8. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  9. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

随机推荐

  1. for循环中i--的妙用 及 两变量互换数值的问题

    int[] array = new int[4]; for(int i = 0; i < array.length; i++){ array[i] = (int)(Math.random() * ...

  2. 【随笔】MQTT简介

    我们知道,将用户使用的设备称为客户端,将提供给用户信息的端口称为服务器端.两个端口之间可以通过多种通信协议进行交互,比如HTTP(同步)或者基于消息传递的异步. HTTP是一种同步无状态的协议,不支持 ...

  3. Android之UI编程(二):表格布局

    表格布局(TableLayout)继承了LinearLayout,它的本质依然是线性布局管理器,表TableLayout采用行.列的形式来管理UI组件,它并不需要明确地声明暴行多少行.多少列,而是通过 ...

  4. 转OSGchina中,array老大的名词解释

    转OSGchina中,array老大的名词解释 转自:http://ydwcowboy.blog.163.com/blog/static/25849015200983518395/ osg:: Cle ...

  5. 设计模式-1-概要(c#版)

    最近又重新看了几本设计模式的书籍和文章,现在再看时又有了新的感悟,而这些书籍和文章都是从需求和业务场景讲什么业务可以用什么模式,要不就是纯理论不好理解,其实我们也要理解和佩服这些概括理论的大牛,必须让 ...

  6. mysql数据库迁移

    由于yum安装mysql的时候,数据库的data目录默认是在/var/lib下,出于数据安全性的考虑需要把它挪到/data分区.步骤如下: 一.关闭apache和mysql. 复制代码 代码如下: s ...

  7. Css3:选择器、字体和颜色样式

    1.私有前缀及其用法 在CSS3模块标准尚未被W3C批准或者标准所提议的特性尚未被浏览器完全实现时,浏览器厂商会使用所谓的私有前缀来测试“试验性的”CSS特性.看看CSS3中实现圆角的代码: .rou ...

  8. shape

    <?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http:/ ...

  9. 给备战NOIP 2014 的战友们的10条建议

    应老胡要求,要写10条建议= = begin 1. 注意文件关联 比如 halt 前要close(input); close(output); 还有就是一定要打这两句话= = 2. 快排,大家都懂得. ...

  10. 使用flex布局通过order控制显示顺序

    整个棋盘是用一个个"+"组成的,共15行15列,所以可以使用一个15X15的二维数组表示,用户下棋的位置用行列位置表示,这样用户下棋的位置所对应的数组元素将由"+&quo ...