Elasticsearch字段数据结构之字符串类型

Elasticsearch字段数据结构说明之字符串类型

字符串类型:text 与 keyword

  • text:字段类型用于全文搜索1,会应用分词器将文本拆分成单词,然后进行索引。可以进行全文搜索和匹配,但不支持精确匹配,且text字段不支持排序。一个具有注脚的文本。
  • keyword:字段类型用于精确匹配2,不会拆分文本,将整个字段内容视为一个单元进行索引。但不支持全文搜索,可用于过滤、排序、聚合检索。

text与keyword的结合应用:es实现字符串数组形式结构

当要将某个字段设置为字符串数组时,可以使用text字段类型的multi-fields功能来支持全文搜索和精确匹配。以下是相应的映射示例:

{
  "mappings": {
    "properties": {
      "isIndividual": {
        "type": "boolean"
      },
      "akaList": {         
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      // 其他字段...
    }
  }
}

本例中将akaList字段设置为字符串数组。在这个示例中,在akaList字段中定义了一个额外的keyword子字段,以便支持精确的关键字匹配。这可以对 akaList 字段进行全文搜索,同时还可以通过 akaList.keyword 字段进行精确匹配。
即通过akaList ,如查询到akaList 中的所有信息:

{
  "akaList": ["John Doe", "Jane Smith"]
}

akaList.keyword,如根据akaList中某一个具体的值,查询文档信息

{
  "query": {
    "term": {
      "akaList.keyword": "John Doe"
    }
  }
}
// 本例中使用term 查询来匹配 akaList.keyword 字段中的值为 "John Doe" 的文档

上述示例中,查询返回的结果是一个包含匹配文档的 JSON 响应。这个响应包含了查询的结果和元数据。


  1. 全文搜索:是一种基于文本内容的搜索方式,它会在搜索时会考虑词根、同义词、拼写错误等,以提高搜索的准确性和召回率。在全文搜索中,搜索引擎会返回与查询最匹配的文档,即使文档中的关键词出现形式略有不同也能找到匹配项。 ↩︎

  2. 精确匹配:要求搜索的内容与查询的内容完全一致。在精确匹配中,搜索引擎不会考虑词根、同义词或其他语言处理技术,只有在搜索的内容与查询的内容完全相同的情况下才会返回匹配项。精确匹配通常用于搜索需要精确匹配的数据,如准确的标识符、ID号码等。 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值