【问题标题】:Difference between keyword and text in ElasticSearchElasticSearch中关键字和文本之间的区别
【发布时间】:2021-11-26 18:53:13
【问题描述】:

谁能用例子解释一下 ElasticSearch 中关键字和文本的区别?

【问题讨论】:

  • @a.l.老实说,我宁愿来这里得到我问题的确切答案,而不是筛选 elasticsearch 文档并解析答案

标签: elasticsearch


【解决方案1】:

关键字类型: 如果您将字段定义为这样的关键字类型。

 PUT products
{
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "type": "keyword"
        }
      }
    }
  }
}

然后,当您对该字段进行搜索查询时,您必须插入整个值(关键字搜索)所以关键字字段。

 POST products/_doc
{
  "name": "washing machine"
}

当你像这样执行搜索时:

 GET products/_search
{
  "query": {
    "match": {
      "name": "washing"
    }
  }
}

它不会匹配任何文档。您必须使用整个单词“洗衣机”进行搜索。

另一方面,

text 类型被分析,您可以使用字段值中的标记进行搜索。 在整个值中进行全文搜索

    PUT products
{
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "type": "text"
        }
      }
    }
  }
}

和搜索:

 GET products/_search
{
  "query": {
    "match": {
      "name": "washing"
    }
  }
}

将返回一个匹配的文档。

您可以查看更多详细信息keyword Vs. text

【讨论】:

  • 如果我们尝试如下操作会怎样: { "query_string": { "query": "*wash*", "fields": [ "name" ] } } 这是在 type: "keyword ”。使用它的原因是原始查询需要更多时间..
  • 感谢您为我解决这个问题。我觉得他们应该改变类型名称。我一直认为关键字类型意味着它被分解成单独的标记。
【解决方案2】:

文本数据类型和关键字数据类型之间的主要区别在于,文本字段是在索引时分析的,而关键字字段则不是。 这意味着,文本字段在索引时被分解为单独的术语以允许部分匹配,而关键字字段按原样索引。

关键字映射

"channel" : {
    "name" : "keyword"
},

"product_image" : {
    "type" : "text",
    "fields" : {
        "keyword" : {
        "type" : "keyword",
        "ignore_above" : 256
        }
     }
}

【讨论】:

    【解决方案3】:

    除了 keyword 类型在弹性搜索中的其他优点之外,还有一个优点是您可以在其中存储任何数据类型。无论是字符串、数字、日期等

    PUT /demo-index/
    {
      "mappings": {
          "properties": {
            "name": { "type": "keyword" }
          }
        }
    }
    
    POST /demo-index/_doc
    {
      "name": "2021-02-21"
    }
    
    POST /demo-index/_doc
    {
      "name": 100
    }
    
    POST /demo-index/_doc
    {
      "name": "Jhon"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 2015-09-14
      相关资源
      最近更新 更多