Mapping and Analysis - 上部

要理解ElasticSearch,首先我们需要关注其很重要的三个部分:

  1. Mapping:数据的每一个域都是如何解析的。
  2. Analysis:一个全文本是如何进行分析并使它可以被搜索的。
  3. Query DSL:Elasticsearch使用的查询语言。

本章就来详细介绍一下其中的AnalysisMapping的过程。


精确值和全文本

总得来说ElasticSearch把数据分成了两个类型,一个是精确值,一个是全文本。

所谓的精确值就是它精确表示的值。比如说一个日期或者一个userID,就像2018-10-01和2018进行精确值比较他们就是不一样的,再比如Apple和apple进行精确值比较也是不一样的。所以说精确值的查询和比较简单,一样就是一样,不一样就是不一样,比如下面这个查询:

img

而另外一个是全文本,它通常是以一种人类理解的语言来表示的,所以一般来说我们很难回答文本是否和查询是一样的或者匹配的,我们一般会说这个文本和查询的匹配程度是怎么样的,也就是说两者的相关度是多少。所以这个时候,我们不是进行精确的 比较,而是进行意图的识别:

  • 一个查询“US”的query我们需要返回包含“Unite State”的文本。
  • 一个查询“jump”的query和Jumped,jumps,jumping甚至leap都是在一定程度上匹配的。
  • 我们上文提到apple和Apple,或者人名的大小写比如josh ling和Josh Ling也是应该匹配的。

那么ElasticSearch是如何做到这些的呢,它会首先分析文本,然后使用分析后的结果来创建inverted index,本章会详细介绍这些过程