es的文本操作(doc)
在Elasticsearch中,索引的文本处理是指对文档中的文本数据进行存储、分析和查询的过程。为了实现高效的全文搜索,Elasticsearch对文本进行特别的处理和管理。
核心概念:
- 文档(Document):
- Elasticsearch中的基本数据单元,每个文档相当于关系型数据库中的一行。文档由多个字段组成,字段可以是文本、数字、日期等不同类型。
- 索引(Index):
- 索引是Elasticsearch中数据的逻辑容器,相当于关系型数据库中的表。每个索引包含许多文档,并且会被分成多个分片来存储。
- 字段类型(Field Type):
- 文本字段(text):用于存储可以进行全文搜索的文本。Elasticsearch会对其进行分词(tokenization)和其他预处理。
- 关键字字段(keyword):用于存储不进行全文搜索的字符串,如ID、标签、类别等。
文本处理的核心步骤:
- 分词(Tokenization):
- 当文本数据被索引时,Elasticsearch会先将长文本字段(
text
类型)分解为多个词元(tokens)。例如,对于句子 "The quick brown fox" 会被分成["the", "quick", "brown", "fox"]
。
- 当文本数据被索引时,Elasticsearch会先将长文本字段(
- 分析器(Analyzer):
- 分词器不仅将文本拆解成词元,还会执行其他处理步骤,如将文本转化为小写、去除停用词(如 "the"、"and" 等)等。常用的分析器有
standard
分析器、whitespace
分析器等。
- 分词器不仅将文本拆解成词元,还会执行其他处理步骤,如将文本转化为小写、去除停用词(如 "the"、"and" 等)等。常用的分析器有
- 倒排索引(Inverted Index):
- 分词后的词元会被存储在倒排索引中,倒排索引是一种数据结构,允许快速找到包含特定词元的文档。它是全文搜索引擎的核心组件。
Restful风格程序:
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。
REST首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。
JSON语法:
基础数据类型:
字符串:
"abcd"
"IT教育"
"2024"
""
数字:
0
1
2
...
布尔值:
true
false
空值:
null
高级数据类型:
数组:
["123","沙河",2022,null,true,{"school":"oldboyedu","class":"linux"}]
对象:
{"name":"123", "age":40, "address":"北京沙河", "hobby":["Linux","思想课"],"other":null}
文档的管理
- 文档的管理
- POST http://10.0.0.101:9200/index_name/_doc[/document_id]
- DELETE http://10.0.0.101:9200/index_name/_doc/document_id
- POST http://10.0.0.101:9200/index_name/_doc/document_id/_update
- GET http://10.0.0.101:9200/index_name/_doc/document_id
- GET http://10.0.0.101:9200/index_name/_search
- 文档的批量操作
- POST http://10.0.0.101:9200/_bulk
- POST http://10.0.0.101:9200/_mget
创建文档
创建文档(不指定文档id)
POST 10.0.0.101:9200/es001/_doc
{
"name": "李振东",
"hobby": ["aaa","bbb","xxx"]
}
创建文档(指定文档id)
POST 10.0.0.101:9200/es001/_doc/1001
{
"name": "李振东",
"hobby": ["aaa","bbb","xxx"]
}
修改文档
全量修改
POST 10.0.0.101:9200/es001/_doc/1001
{
"name": "李振东东",
"hobby": ["aaa2","bbb2","xxx2"]
}
局部修改
POST 10.0.0.101:9200/es001/_doc/_update
{
"doc":{
"hobby":["抽烟","喝酒","烫头"]
}
}
文档的查看
GET 10.0.0.101:9200/es001/_search
文档的删除
DELTE 10.0.0.101:9200/es001/_doc/1001
文档的批量操作
批量创建
POST 10.0.0.101:9200/_bulk
{ "create": { "_index": "es010"} }
{ "name": "aaa","hobby":["骑车","拍小电影"] }
{ "create": { "_index": "es010","_id": 1002} }
{ "name": "bbb","hobby":["妹子","吃面"] }
{ "create": { "_index": "es010","_id": 1001} }
{ "name": "ccc","hobby":["家庭主妇"] }
{ "create": { "_index": "es111"} }
{ "name": "ddd","hobby":["骑车","拍小电影"] }
批量修改
POST 10.0.0.101:9200/_bulk
{ "update" : {"_id" : "1001", "_index" : "es010"} }
{ "doc" : {"name" : "AObama"} }
{ "update" : {"_id" : "1002", "_index" : "es010"} }
{ "doc" : {"name" : "zhangqiling"} }
查询指定文档(批量查询)
POST 10.0.0.101:9200/_mget
{
"docs": [
{
"_index": "es010",
"_id": "1001"
},
{
"_index": "es010",
"_id": "1002"
}
]
}
批量删除文档
POST 10.0.0.101:9200/_bulk
{ "delete" : { "_index" : "es010", "_id" : "1001" } }
{ "delete" : { "_index" : "es010", "_id" : "1002" } }