Term suggester 创建索引 curl -XPUT 'http://172.16.125.136:9200/term?pretty'创建 mapping curl -XPOST http://172.16.125.136:9200/term/suggester/_mapping -H 'Content-Type:application/json' -d '{"properties":{"body":{"type":"text&…
elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介绍ik的用法, 当我们创建一个index(库db_news)时,easticsearch默认提供的分词器db_news,分词结果会把每个汉字分开,而不是我们想要的根据关键词来分词.例如: 代码如下: 正常情况下,这不是我们想要的结果,比如我们更希望 “我”,“爱”,“北京”,"天安门"这样…
由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsearch上使用.当然前提是有elasticsearch的插件. 至于插件怎么开发,这里有一片文章介绍:http://log.medcl.net/item/2011/07/diving-into-elasticsearch-3-custom-analysis-plugin/暂时还没时间看,留在以后仔细研…
elasticsearch 中文分词(elasticsearch-analysis-ik)安装 下载最新的发布版本 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip 在elasticsearch的plugins目录下,创建ik目录 cd /usr/local/elasticsearch-6.3.0/plugins mkdir…
Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,功能强大,最近刚好要研究搜索这一块,简要记录备日后查阅 安装Java JDK,由于Lucene是用Java开发的,所以需要安装JVM 从JAVA官网下载JDK安装包,注意,由于后面我们安装中文分词插件需要装maven,所以安装的必须是JDK包而不是JRE 通过RPM -ivh 命令安装下好的安装包 编辑配置文件,将安装好的java路径加入环境变量 #vim /etc/profile 在里面添加如下…
ElasticSearch 是强大的搜索工具,并且是ELK套件的重要组成部分 好记性不如乱笔头,这次是在windows环境下搭建es中文分词搜索测试环境,步骤如下 1.安装jdk1.8,配置好环境变量 2.下载ElasticSearch7.1.1,版本变化比较快,刚才看了下最新版已经是7.2.0,本环境基于7.1.1搭建,下载地址https://www.elastic.co/cn/downloads/elasticsearch,得到一个zip压缩包,解压缩后cmd下运行下面的命令即可启动ES .…
ElasticSearch常用的很受欢迎的是IK,这里稍微介绍下安装过程及测试过程.   1.ElasticSearch官方分词 自带的中文分词器很弱,可以体检下: [zsz@VS-zsz ~]$ curl -XGET 'http://192.168.31.77:9200/_analyze?analyzer=standard' -d '岁月如梭' {     "tokens": [         {             "token": "岁&quo…
1. 安装elasticsearch.kibana.x-pack #安装elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.3.tar.gz tar -zxvf elasticsearch-5.5.3.tar.gz ./bin/elasticsearch -d #启动elasticsearch,默认端口9200 #安装kibana Kibana是一个为 ElasticS…
前面我们介绍了Centos安装elasticsearch 6.4.2 教程,elasticsearch内置的分词器对中文不友好,只会一个字一个字的分,无法形成词语,别急,已经有大拿把中文分词器做好了,elasticsearch配套的ik-analyzer,我们一起来看看如何安装吧. 我们到ik-analyzer中文分词器开源项目查找与elasticsearch对应的v6.4.2版本(有的是6.0.0版https://github.com/medcl/elasticsearch-analysis-…
中文分词器 在lunix下执行下列命令,可以看到本来应该按照中文”北京大学”来查询结果es将其分拆为”北”,”京”,”大”,”学”四个汉字,这显然不符合我的预期.这是因为Es默认的是英文分词器我需要为其配置中文分词器. curlHTTP://192.168.79.131:9200/shb01/_analyze?pretty=true -d'{"text":"北京大学"}' Es整合ik不直接用ik官网的工具包,需要将ik工具包封装成es插件才行,这个已经有人封装好了…
本文假设你已经搭建好elasticsearch服务器,并在上面装了kibana和IK中文分词组件 elasticsearch+kibana+ik的安装,之前的文章有介绍,可参考. mapping介绍:定义索引(index)类型(type)的元数据,包括:数据类型.分词行为.建立倒排索引行为.搜索行为等.在搜索的时候会根据这个mapping定义的分词行为.搜索行为进行搜索. 1.创建索引 PUT news 2.创建mapping POST news/new/_mapping { "new"…
正因为Elasticsearch 内置的分词器对中文不友好,会把中文分成单个字来进行全文检索,所以我们需要借助中文分词插件来解决这个问题. 一.安装maven管理工具 Elasticsearch 要使用 ik,就要先构建 ik 的 jar包,这里要用到 maven 包管理工具,而 maven 依赖java 环境,上一篇文章已经确保安装了java环境 链接:https://pan.baidu.com/s/1MEOh28XoKjU_KMKj1ebJyQ 密码:edc9 //百度云apache-mav…
下载 IK 的版本要与 Elasticsearch 的版本一致,因此下载 7.1.0 版本. 安装 1.中文分词插件下载地址:https://github.com/medcl/elasticsearch-analysis-ik 2.拼音分词插件下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin 下载你对应的版本 将解压后的 IK 文件夹,放入 elasticsearch 文件夹下的 plugins/ik 目录下. 启动 Elas…
elasticsearch默认的分词:http://localhost:9200/userinfo/_analyze?analyzer=standard&pretty=true&text=我是中国人 (或者不写analyzer=standard) 分词之后是:“我”“是”“中”“国”“人“,会将每一个词都拆开.使用ik对中文分词 http://localhost:9200/userinfo/_analyze?analyzer=ik&pretty=true&text=我是中国…
一.创建测试数据 1.创建一个index curl -X PUT http://127.0.0.1:9200/student?pretty -H "Content-Type: application/json" -d '{ "settings": { "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "_source&q…
facets Elasticsearch提供完整的java API用来支持facets.在查询的过程中,将需要计数的facets添加到FacetBuilders中.然后将该FacetBuilders条件到查询请求中. SearchResponse sr = node.client().prepareSearch() .setQuery( /* your query */ ) .addFacet( /* add a facet */ ) .execute().actionGet(); 为了构建fa…
概要 本篇主要介绍一个Term Vector的概念和基本使用方法. term vector是什么? 每次有document数据插入时,elasticsearch除了对document进行正排.倒排索引的存储之外,如果此索引的field设置了term_vector参数,elasticsearch还会对这个的分词信息进行计算.统计,比如这个document有多少个field,每个field的值分词处理后得到的term的df值,ttf值是多少,每个term存储的位置偏移量等信息,这些统计信息统称为te…
安装 方法1 - download pre-build package from here: https://github.com/medcl/elasticsearch-analysis-ik/releases 创建文件夹 cd your-es-root/plugins/ && mkdir ik 解压到你的文件夹 your-es-root/plugins/ik 方法2 - use elasticsearch-plugin to install ( supported from versi…
今天同事使用ES查询印地语的文章.发现查询报错,查询语句和错误信息如下: 查询语句:{    "query":{        "bool":{            "must":[                {                    "range":{                        "update_time":{                            …
IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze { "text":"农业银行" } 得到如下结果,可以发现es的默认分词器无法识别中文中农业.银行这样的词汇,而是简单的将每个字拆完分为一个词,这显然不符合我们的使用要求. { "tokens": [ { "token": "农", "start_offse…
遇到的问题 检索葡萄糖关键字,希望结果仅包含葡萄糖,不包含葡萄:检索葡萄,希望结果包含葡萄糖. 同义词如何配置 如何确保搜索关键词被正确分词 分析器分词流程 分析器扮演着非常重要的角色,ES提供的有内置的分析器,社区也提供各种分析器插件(如中文的ik分析器).分析器由以下几个组件构成 字符过滤器 主要职责是在分词器前过滤字符流,在源字符流中添加.删除.替换字符.一个分析器中可以有0个或多个字符过滤器.主要包括:html char filter.mapping char filter等 分词器 主…
river-jdbc 安装 ./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.4.0.8/elasticsearch-river-jdbc-1.4.0.8-plugin.zip 文档 两种方式:river或者feeder 该插件能够以“pull模式”执行river和以“push模式”执行feeder.在feede…
基于查询的删除API 基于查询的删除API允许开发者基于查询删除一个或者多个索引.一个或者多个类型.下面是一个例子. import static org.elasticsearch.index.query.FilterBuilders.*; import static org.elasticsearch.index.query.QueryBuilders.*; DeleteByQueryResponse response = client.prepareDeleteByQuery("test&q…
计数API 计数API允许开发者简单的执行一个查询,返回和查询条件相匹配的文档的总数.它可以跨多个索引以及跨多个类型执行. import static org.elasticsearch.index.query.xcontent.FilterBuilders.*; import static org.elasticsearch.index.query.xcontent.QueryBuilders.*; CountResponse response = client.prepareCount("t…
bulk API bulk API允许开发者在一个请求中索引和删除多个文档.下面是使用实例. import static org.elasticsearch.common.xcontent.XContentFactory.*; BulkRequestBuilder bulkRequest = client.prepareBulk(); // either use client#prepare, or use Requests# to directly build index/delete req…
索引API 索引API允许开发者索引类型化的JSON文档到一个特定的索引,使其可以被搜索. 生成JSON文档 有几种不同的方式生成JSON文档 利用byte[]或者作为一个String手动生成 利用一个Map将其自动转换为相应的JSON 利用第三方库如Jackson去序列化你的bean 利用内置的帮助函数XContentFactory.jsonBuilder() 手动生成 需要注意的是,要通过Date Format编码日期. String json = "{" + "\&qu…
客户端 有多个地方需要使用Java client: 在存在的集群中执行标准的index, get, delete和search 在集群中执行管理任务 当你要运行嵌套在你的应用程序中的Elasticsearch的时候或者当你要运行单元测试或者集合测试的时候,启动所有节点 获得一个Client是非常容易的,最通用的步骤如下所示: 创建一个嵌套的节点,充当集群的一个节点 从这个嵌套的节点请求一个Client 另外一种方式是创建一个TransportClient来连接集群. 重要提示: 客户端和集群端推…
Java API 这节会介绍elasticsearch支持的Java API.所有的elasticsearch操作都使用Client对象执行.本质上,所有的操作都是并行执行的. 另外,Client中的操作有可能累积并通过Bulk执行. maven Elasticsearch托管在Maven仓库中.例如,你可以在pom.xml中定义最新的版本. <dependency> <groupId>org.elasticsearch</groupId> <artifactId…
参见: https://github.com/medcl/elasticsearch-rtf 具体步骤参见:ubuntu安装elasticsearch-rtf elasticsearch-head 安装…
先来一个简单的测试 # curl -XPOST "http://192.168.9.155:9200/_analyze?analyzer=standard&pretty" -d 'PHP是世界上最好的语言' //_analyze表示分析分词:analyzer=standard,表示分词方式standard; -d表示测试的一段文字 测试结果 { "tokens" : [ { "token" : "php", , , &…