ElasticSearch 分析器
分析器将文本块标准化为适用于倒排索引单独的词,转为标准形式。
字符过滤器
去除字符串的HTML,将&转为and
分词器
将字符串做拆分,如根据空格或逗号隔开
标记过滤
每个分词器产生的词都需经过标记过滤步骤,对词进行更改。如(Quick转为quick,books转为book)
ElasticSearch自带的分析器
1.标准分析器
ElasticSearch默认的分析器,也是最通用的分析器
2.简单分析器
将单词做切分。如:hello world拆分为hello,world拆分为hello
3.空格分析器
通过空格切分文本,不转换大小写。
分析器使用
当创建一个文档时,全文字段会被分析器拆分为单独的词创建倒排索引。
在进行全文字段搜索时,也经过同样的处理。
当使用一个确切值搜索时,不使用分析处理。
ElasticSearch映射
为了ES能正确的处理数据,如日期字段处理成日期,数据字段处理成数字。
当索引一个新的文档,ES会通过动态地映射猜测字段来行,字段类型源于JSON的基本数据类型
ElasticSearch需要能判断字段类型的标准。
字段类型
类型 | 对应的数据类型 |
---|---|
String | string |
Whole number | stringbyte , short , integer , long |
StringFloating point | string |
String | stringfloat , double |
StringBoolean | string |
Date | date |
映射示例:
JSON格式 | 映射的数据类型 |
---|---|
StringBoolean: true or false | “boolean” |
Whole number: 123 | “long” |
Floating point: 123.45 | “double” |
String, valid date: “2014-09-15” | “date” |
String: “foo bar” | “string” |
Date | date |
除了以上的基本类型意外,JSON还有null,数组和对象等复杂类型。
数组
数组值需要包含多个值即可:
{
"tag": [ "search", "nosql" ]}
空字段
空字段不会被索引,以下格式被认为是空字段:
"empty_string": "",
"null_value": null,
"empty_array": [],
"array_with_null_value": [ null ]
对象
写法示例:
{
"tweet": "Elasticsearch is very flexible",
"user": {
"age":