在Elasticsearch中-SpaceJam一个全文搜索的实例

在Elasticsearch中进行全文搜索通常涉及几个步骤:创建索引、定义映射、索引文档、执行搜索查询。下面我将通过一个名为"SpaceJam"的虚构实例来演示如何进行全文搜索。

步骤 1: 创建索引

首先,我们需要创建一个索引。在这个例子中,我们假设我们正在索引关于电影的信息。

```json

PUT /space_jam

{

"settings": {

"number_of_shards": 1,

"number_of_replicas": 1

}

}

```

步骤 2: 定义映射

接下来,我们为索引定义映射。映射将指定每个字段的数据类型和分析器。

```json

PUT /space_jam/_mapping

{

"properties": {

"title": {

"type": "text",

"analyzer": "english"

},

"description": {

"type": "text",

"analyzer": "english"

},

"release_date": {

"type": "date",

"format": "yyyy-MM-dd"

},

"director": {

"type": "text",

"analyzer": "standard"

}

}

}

```

在这个映射中,我们使用了`english`分析器来处理`title`和`description`字段,使用`standard`分析器来处理`director`字段。

步骤 3: 索引文档

现在我们可以向索引中添加文档。例如,我们可以添加关于电影《Space Jam》的文档。

```json

POST /space_jam/_doc

{

"title": "Space Jam",

"description": "Michael Jordan teams up with the Looney Tunes to defeat a group of aliens.",

"release_date": "1996-11-15",

"director": "Joe Pytka"

}

```

步骤 4: 执行搜索查询

最后,我们可以执行全文搜索查询。例如,如果我们想要找到包含"Michael Jordan"的所有文档,我们可以执行以下查询:

```json

GET /space_jam/_search

{

"query": {

"match": {

"description": "Michael Jordan"

}

}

}

```

这个查询将返回所有在`description`字段中包含"Michael Jordan"的文档。

搜索结果

Elasticsearch将返回一个包含匹配文档的JSON响应。结果可能如下所示:

```json

{

"took": 1,

"timed_out": false,

"_shards": {

"total": 1,

"successful": 1,

"skipped": 0,

"failed": 0

},

"hits": {

"total": {

"value": 1,

"relation": "eq"

},

"max_score": 2.8477805,

"hits": [

{

"_index": "space_jam",

"_type": "_doc",

"_id": "1",

"_score": 2.8477805,

"_source": {

"title": "Space Jam",

"description": "Michael Jordan teams up with the Looney Tunes to defeat a group of aliens.",

"release_date": "1996-11-15",

"director": "Joe Pytka"

}

}

]

}

}

```

这个响应显示了搜索查询找到了一个匹配的文档,并且提供了文档的得分和原始内容。

通过这个"SpaceJam"的实例,我们可以看到Elasticsearch如何用于全文搜索,包括创建索引、定义映射、索引文档以及执行搜索查询。

相关推荐
MXsoft6187 小时前
**非Agent部署:网络设备分钟级纳管的技术解析**
运维·自动化
艾德金的溪7 小时前
windows安装CC Switch
运维·ai
极客先躯7 小时前
高级java每日一道面试题-2026年02月09日-实战篇[Docker]-Docker 容器有哪些安全风险?如何缓解?
java·运维·网络·安全·docker·容器
yuanzhengme7 小时前
Ollama【部署 07】搭建本地智能体的简单说明(局域网离线部署Ollama+模型迁移+Docker部署AnythingLLM)
运维·docker·容器·大模型·ollama·本地智能体
运维老郭7 小时前
Kubernetes 二进制部署完全指南:从零搭建生产级HA集群
运维·云原生·kubernetes
MXsoft6187 小时前
## 告警治理:从“风暴”到“精准”——运维告警压缩与根因定位实践指南
运维
MXsoft6187 小时前
**智慧校园哑终端监控:摄像头、门禁、信息屏的统一管理实践**
运维
唐墨1237 小时前
关于linux kernel错误码为负数编码这件事情,我个人的一些看法
linux·运维·服务器
IT WorryFree8 小时前
基于Fortinet MIB实现设备资产管理完整方案
运维·服务器·网络
鼎讯信通8 小时前
宽频高敏・全域监测|鼎讯 DXMP 系列,打造风电射频侦测新范式
运维·能源·信息与通信