ElasticSearch分词器
什么是分词器?
分词器,是将用户输入的一段文本,分析成符合逻辑的一种工具。到目前为止呢,分词器没有办法做到完全的符合人们的要求。和我们有关的分词器有英文的和中文的。英文的分词器过程:输入文本-关键词切分-去停用词-形态还原-转为小写。中文的分词器分为:单字分词 例:中国人 分成中、国、人;二分法分词:例中国人:中国、国人;词典分词:有基本的语意来进行分词的,例:中国人分成中国,国人,中国人,现在用的是极易分词和庖丁分词。
Elasticsearch中的分词器
ES中索引的建立和查询的时候,需要使用相同的分词器,才能查出正确的结果。
如果,我们想把一个短语、一句话、一个字段作为整体来查询,那么我们需要设置字段为不分词,也就是不分析。而默认String字段是分析的。
先建立一个索引
curl -XPUT localhost:9200/aaa
然后定义映射,注意:只有刚刚新建、还没有任何数据的索引,才能定义映射。定义映射Mapping可以使用_mapping RESTAPI,符合下面的标准语法:
curl -XPUT localhost:9200/索引名称/类型名称/_mapping?pretty -d '{"类型名称":{"properties":{"字段名称":{"type":"字段类型","store":"是否存储","index":"索引方式、是否分析"}}}}'
比如,其中str1为String类型不分析;其他的字段str2为默认配置,就不用设置了。
curl -XPUT localhost:9200/aaa/aaa/_mapping?pretty -d '{"aaa":{"properties":{"str1":{"type":"string","index":"not_analyzed"}}}}'
然后添加两条数据:
curl localhost:9200/aaa/aaa?pretty -d '{"str1":"hello, world!","str2":"goodbye! world"}'
curl localhost:9200/aaa/aaa?pretty -d '{"str1":"hello","str2":"world"}'
分析的String如何查询
如果查询的单个词,分词的字段可以使用term进行查询,如下所示:如果查询的是一个单独的词,那么会返回包含它或者等于它的目标文档。
curl -XPOST localhost:9200/aaa/_search?pretty -d '{"query":{"term":{"str2":"world"}}}'
不分析的String如何查询
如果字段是不分词的,而查询的是这个字段里面的一个词,那么使用term时无法查询到目标文档的。
$ curl -XPOST localhost:9200/aaa/_search?pretty -d '{"query":{"term":{"str1":"hello"}}}'
使用term查询,如果该字段是不分词,只有完整的输入目标字段,才能正确的匹配。
curl -XPOST localhost:9200/abc/_search?pretty -d '{"query":{"term":{"str1":"hello, world!"}}}'
总结
对于分词的字段:
1 如果查询的是单个词,则查询到包含它的文档,返回结果与匹配程度有关
2 如果查询的是一段能被分析的话,比如hello world
。那么查询的结果是包含分析得出的词的文档,即包含hello
和world
的全部文档。
对于不分词的字段:
只有查询的是 目标字段的精确值,才能匹配。
参考:http://www.cnblogs.com/xing901022/p/5235993.html
ElasticSearch分词器的更多相关文章
- Elasticsearch——分词器对String的作用
更多内容参考:Elasticsearch学习总结 关于String类型--分词与不分词 在Elasticsearch中String是最基本的数据类型,如果不是数字或者标准格式的日期等这种很明显的类型, ...
- elasticsearch分词器Jcseg安装手册
Jcseg是什么? Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言 ...
- Elasticsearch 分词器
无论是内置的分析器(analyzer),还是自定义的分析器(analyzer),都由三种构件块组成的:character filters , tokenizers , token filters. 内 ...
- ElasticSearch 分词器,了解一下
这篇文章主要来介绍下什么是 Analysis ,什么是分词器,以及 ElasticSearch 自带的分词器是怎么工作的,最后会介绍下中文分词是怎么做的. 首先来说下什么是 Analysis: 什么是 ...
- elasticsearch分词器ik
1. 下载和es配套的版本 git clone https://github.com/medcl/elasticsearch-analysis-ik 2. 编译 cd elasticsearch-an ...
- Elasticsearch(10) --- 内置分词器、中文分词器
Elasticsearch(10) --- 内置分词器.中文分词器 这篇博客主要讲:分词器概念.ES内置分词器.ES中文分词器. 一.分词器概念 1.Analysis 和 Analyzer Analy ...
- elasticsearch教程--中文分词器作用和使用
概述 本文都是基于elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例 环境准备 ·全新最小 ...
- 使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用
原文:使用Docker 安装Elasticsearch.Elasticsearch-head.IK分词器 和使用 Elasticsearch的安装 一.elasticsearch的安装 1.镜像拉取 ...
- 如何在Elasticsearch中安装中文分词器(IK+pinyin)
如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...
随机推荐
- initWithNibName/awakeFromNib/initWithCoder
转自: http://leeyin.iteye.com/blog/1040362 每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是和类似 ...
- Python 中函数(Function)的用法
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print().input(),也可以自己创建函数, ...
- HTML之网页的基本介绍
一.web的基本介绍 web就是world wide web的缩写,称之为全球广域网,俗称WWW 可以将web理解成一种当前的互联网,对于我们来说更多的就是网站服务 网站我们可以理解成是由很多网页组合 ...
- Sublime Text 套件介紹(四):Pretty JSON
JSON,一個輕量級的資料交換語言,目前許多網站AJAX request的回應結果都是JSON格式 以下是一個標準的JSON格式 { "firstName": " ...
- Linux文件的IO操作 一
系统调用 系统调用: 操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务 为什么用户程序不能直接访问系统内核提供的服务 为了更好地保护内核空间, ...
- POI读word docx 07 文件的两种方法
POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocument.一个XWPFDocument代表一个docx文档,其可以用来读docx文档,也可以用来写docx文档. ...
- 请大神看看10.10Beta1的AppleRTC怎么破?原版会导致BIOS重置!
看起来 跟10.9一样 sudo perl -pi -e 's|\x75\x2e\x0f\xb6|\xeb\x2e\x0f\xb6|' /System/Library/Extensions/Apple ...
- Python之写入文件(1)
一.写入文件 保存数据也是在各个编程语言中常用的操作,将数据写入到文件中是常用的操作,你可以将程序运行中的一些临时输出保存至文件中,以便后续打开文件查看,也可以把这些文件读入程序中来操作其中的数据. ...
- Python_sort函数结合functools.cmp_to_key(func)分析
举例如下: from functools import cmp_to_key persons = [ { 'name':'zhangsan', 'age':20, 'grade':98 }, { 'n ...
- C盘清理小技巧
步骤/方法 1 1 关闭休眠功能,在开始菜单的运行里输入powercfg -h off 指令,关闭休眠,此文件实际大小和物理内存是一样的,大约可以为C盘释放1-3G的空间. 2 2 设置虚拟内存: ...