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号码等。 ↩︎

猜你喜欢

转载自blog.csdn.net/qq_44543317/article/details/132587173
今日推荐