Elasticsearch 之 Hello World (二)

首先测试下分词尤其是中文分词功能,这个可是传统数据库如mysql,sqlserver的痛啊。

打开浏览器,并登录到http://localhost:5601,点击Dev Tools项,在Console栏输入

POST _analyze
{
  "analyzer": "standard",
  "text":"Hello World ElasticSearch"
}

会在右面显示返回的结果

{
  "tokens": [
    {
      "token": "hello",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "world",
      "start_offset": 6,
      "end_offset": 11,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "elasticsearch",
      "start_offset": 12,
      "end_offset": 25,
      "type": "<ALPHANUM>",
      "position": 2
    }
  ]
}

一切看上去都挺美好,等加入中文看看。

POST _analyze
{
  "analyzer": "standard",
  "text":"ElasticSearch是一个很不错的全文检索软件。"
}

结果是

{
  "tokens": [
    {
      "token": "elasticsearch",
      "start_offset": 0,
      "end_offset": 13,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "是",
      "start_offset": 13,
      "end_offset": 14,
      "type": "<IDEOGRAPHIC>",
      "position": 1
    },
    {
      "token": "一",
      "start_offset": 14,
      "end_offset": 15,
      "type": "<IDEOGRAPHIC>",
      "position": 2
    },
    {
      "token": "个",
      "start_offset": 15,
      "end_offset": 16,
      "type": "<IDEOGRAPHIC>",
      "position": 3
    },
    {
      "token": "很",
      "start_offset": 16,
      "end_offset": 17,
      "type": "<IDEOGRAPHIC>",
      "position": 4
    },
    {
      "token": "不",
      "start_offset": 17,
      "end_offset": 18,
      "type": "<IDEOGRAPHIC>",
      "position": 5
    },
    {
      "token": "错",
      "start_offset": 18,
      "end_offset": 19,
      "type": "<IDEOGRAPHIC>",
      "position": 6
    },
    {
      "token": "的",
      "start_offset": 19,
      "end_offset": 20,
      "type": "<IDEOGRAPHIC>",
      "position": 7
    },
    {
      "token": "全",
      "start_offset": 20,
      "end_offset": 21,
      "type": "<IDEOGRAPHIC>",
      "position": 8
    },
    {
      "token": "文",
      "start_offset": 21,
      "end_offset": 22,
      "type": "<IDEOGRAPHIC>",
      "position": 9
    },
    {
      "token": "检",
      "start_offset": 22,
      "end_offset": 23,
      "type": "<IDEOGRAPHIC>",
      "position": 10
    },
    {
      "token": "索",
      "start_offset": 23,
      "end_offset": 24,
      "type": "<IDEOGRAPHIC>",
      "position": 11
    },
    {
      "token": "软",
      "start_offset": 24,
      "end_offset": 25,
      "type": "<IDEOGRAPHIC>",
      "position": 12
    },
    {
      "token": "件",
      "start_offset": 25,
      "end_offset": 26,
      "type": "<IDEOGRAPHIC>",
      "position": 13
    }
  ]
}

这显然不能忍啊,每个中文字都拆,基本就是不能用的节奏。google下,貌似其还有analyzer为chinese选项,测试发现结果一样。网上搜索发现这里一般用的是smartcn或是IKAnanlyzer插件,有的资料和书就推荐IKAnanlyzer,但这些资料都是基于老版本的es,我去IKAnanlyzer的github上去看了下,发现貌似太监了,所以还是用官方推荐的smartcn吧,下载安装的过程和安装其他插件一致,这里还是推荐离线包安装。安装完,应该要重启es服务才能生效。现在再试试

POST _analyze
{
  "analyzer": "smartcn",
  "text":"ElasticSearch是一个很不错的全文检索软件。"
}
{
  "tokens": [
    {
      "token": "elasticsearch",
      "start_offset": 0,
      "end_offset": 13,
      "type": "word",
      "position": 0
    },
    {
      "token": "是",
      "start_offset": 13,
      "end_offset": 14,
      "type": "word",
      "position": 1
    },
    {
      "token": "一个",
      "start_offset": 14,
      "end_offset": 16,
      "type": "word",
      "position": 2
    },
    {
      "token": "很",
      "start_offset": 16,
      "end_offset": 17,
      "type": "word",
      "position": 3
    },
    {
      "token": "不错",
      "start_offset": 17,
      "end_offset": 19,
      "type": "word",
      "position": 4
    },
    {
      "token": "的",
      "start_offset": 19,
      "end_offset": 20,
      "type": "word",
      "position": 5
    },
    {
      "token": "全文",
      "start_offset": 20,
      "end_offset": 22,
      "type": "word",
      "position": 6
    },
    {
      "token": "检索",
      "start_offset": 22,
      "end_offset": 24,
      "type": "word",
      "position": 7
    },
    {
      "token": "软件",
      "start_offset": 24,
      "end_offset": 26,
      "type": "word",
      "position": 8
    }
  ]
}

这下看上去河蟹多了。:)

时间: 2024-10-08 20:04:43

Elasticsearch 之 Hello World (二)的相关文章

Elasticsearch Java API (二): index创建删除 cluster管理

Elasticsearch Java API (二): index创建删除 cluster管理  elastic官网有权威的java api 英文的 需要耐心看 这里整理下基本操作 创建maven工程添加依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.2</ver

2018.2最新-Scrapy+elasticSearch+Django打造搜索引擎(二)

请问您今天要来个引擎吗? 工欲善其事必先利其器 最终项目上线演示地址: http://search.mtianyan.cn 第二节:我们搞搞比利,搞搞环境的搭建.Github地址: https://github.com/mtianyan/ArticleSpider IDE: pycharm 数据库: mysql, redis, elasticsearch 开发环境 virtualenv 这次的数据库只介绍mysql,后面两个会放到要用到的章节. Pycharm的安装和使用 Pycharm在win

elasticsearch 实现N抽二

在实际搜索中,如果商家信用良好,那有可能搜索的结果前几条都是该商家的,这样会引起其他商家的不满,因此需要干预一下排序,使每页一个商家最多显示两条商品.俗称N抽二,这在淘宝,天猫也是有此规则的. 在elasticseasrch中,对外暴露的接口不多,想了几天,最终采用elasticsearch 自带的聚合功能来实现,具体参见 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-met

Elasticsearch相关配置(二)

一.关于elasticsearch的基本概念 term 索引词,在elasticsearch中索引词(term)是一个能够被索引的精确值.foo,Foo Foo几个单词是不相同的索引词.索引词(term)是可以通过term查询进行准确的搜索. text 文本是一段普通的非结构化文字,通常,文本会被分析称一个个的索引词,存储在elasticsearch的索引库中,为了让文本能够进行搜索,文本字段需要事先进行分析:当对文本中的关键词进行查询的时候,搜索引擎应该根据搜索条件搜索出原文本. analys

Elasticsearch学习笔记(二)Search API 与 Query DSL

一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以HTTP请求的的query stirng 附带的 适用范围:适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息: 适用于简单的查询条件 二.Query DSL 将Query DSL视为ASL查询则有两种类型的查询语句: 叶子查询语句(Leaf Query clause) : 叶

ElasticSearch笔记整理(二):CURL操作、ES插件、集群安装与核心概念

[TOC] CURL操作 CURL简介 curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求.简单的认为是可以在命令行下面访问url的一个工具.在centos的默认库里面是有curl工具的,如果没有请yum安装即可. curl -X 指定http的请求方法 有HEAD GET POST PUT DELETE -d 指定要传输的数据 -H 指定http请求头信息 curl创建索引库 curl -XPUT http://<ip>:9200

Elasticsearch应用的十二个小案例

导入依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticse

Elasticsearch入门学习(二):简单的入门学习

一.ES一些概念 索引 _inde,文档存储的地方,类似于关系型数据中的数据库. 事实上,数据被存储和索引在分片中,索引仅仅是一个把一个或者多个分片分组在一起的逻辑空间. 索引名字必须是全部小写,不允许以下划线开头,不能包含逗号. 文档 文档id是一个字符串,与_index组合时,就可以在ElasticSearch中唯一标识一个文档.创建文档时,可以自定义_id,也可以让ES帮助自动生成. 二.使用postman入门学习 创建索引 创建索引库的格式为:使用put请求:ip:9200/{index

ElasticSearch入门系列(二)交互API

一.基于HTTP协议,以JSON为数据交互格式的RESTful API 向ElasticSearch发出请求的组成部分与其他的普通的HTTP请求是一样的: curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>' VERD  HTTP方法:GET  POST  PUT   HEAD  DELETE PROTOCOL http或者