You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Elasticsearch如何分析数字字段?自动识别与分析机制咨询

Elasticsearch数字字段分析逻辑与文档指引

先说说我理解的你的场景:你有一份包含数字字段(pricemodelYear)的文档:

{"date": "2018-04-29T00:36", "price": 11900, "sellerName": "Leif J", "description": "Nybesiktigad U.A 2018-04-28 vid 2291mil. 360 mil på senaste 6 åren. Ej vinterkörd, och varmgarage på varje vinterförvaring (i min ägo.) Extra utöver standard: -Eluppvärmda handtag (2läges) -LED lampor -Avtagbar packbox. -TK Hydrotech avgassystem (ca 10% effekt) Länkar nedan: https://www.youtube.com/watch?v=vqa_AiNq8-4 http://www.turbokit.net/#sthash.MboS0Bf2.dpbs Läs gärna Expressens omdöme* för mer info (*fel i artikeln=varvräknare finnes) https://www.expressen.se/motor/tester/en-fatolj-pa-hjul/ Billig i skatt / försäkring / drift. Kymco, Grand Dink, 150, Scooter, Maxi, Maxiscooter, Vespa, Piaggio", "location": "Malmö, Sydväst", "id": 0, "title": "Kymco Grand Dink 250", "modelYear": 2002, "url": "https://www.blocket.se/malmo/Kymco_Grand_Dink_250_79092265.htm?ca=11&w=3", "vehicleType": "Scooter"}

默认索引后,Elasticsearch自动识别出这两个是数字类型——你通过执行下面的查询,返回结果里数字字段无引号包裹,也验证了这一点:

POST _search
{
  "query": {
    "bool": {
      "must": {
        "multi_match": {
          "fields": [ "title^1.0", "description" ],
          "operator": "or",
          "query": "honda",
          "type": "cross_fields"
        }
      }
    }
  }
}

现在来解答你的两个问题:

一、数字字段是否会被分析?分析过程是怎样的?

默认情况下,数字类型字段是不会被分析的

Elasticsearch里的数字字段(比如integerlongdouble)属于结构化字段,它们的设计目标是支持精确匹配、范围查询(比如price > 10000)、聚合统计这类操作,不需要像文本字段那样进行分词处理。它们会直接以原始数值的形式被索引,完全跳过分析流程。

如果非要让数字字段被分析,你需要手动修改字段映射,把它设置为text类型(但这通常是不合理的,会丢失数字的结构化查询能力)。这时它会被当成普通文本处理:比如数值2002会被转换为字符串"2002",经过默认的标准分词器处理后,生成单个词条"2002"存入倒排索引。

二、相关官方文档的查阅位置

你要找的内容都在Elasticsearch官方文档里,具体可以看这些核心章节:

  • 自动字段识别(动态映射):查看「Dynamic Mapping」章节,里面详细讲解了Elasticsearch如何自动检测字段类型,包括数字、日期、文本等类型的识别规则和触发条件。
  • 数字字段的索引行为:在「Field Data Types」下找到对应数字类型(比如integerlong)的说明页,里面会明确标注这类字段是否支持分析,以及它们的索引、查询逻辑。
  • 整体分析流程:查阅「Analysis」章节,这里会系统讲解Elasticsearch的分析器、分词器、过滤器等组件的工作原理,以及不同字段类型如何应用分析逻辑。

内容的提问来源于stack exchange,提问作者Sahand

火山引擎 最新活动