搜索

概念

映射(Mapping)                  数据在每个字段中国的解释说明

分析(Analysis)                  全文是如何处理可以被搜索的

领域的特定查询语言(Query DSL)          Elasticsearch,强大的查询语言

 

倒排索引

Elasticsearch使用一种倒排索引的结构来做快速的全文搜索。倒排索引由文档中出现的唯一单词列表,及对于每个单词在文档中的位置组成,为了创建倒排索引,首先切分每个文档content字段为单独的单词(叫做term),把词放入列表排序,搜索时只需要找到每个词在哪个文档中出现即可

 

分析和分析器

字符过滤器(character filter),处理字符串过滤一些HTML标记,分词器,根据空格,逗号将单词分开

当你查询全文(full text)字段,查询将使用相同的分析器来分析查询字符串,以产生正确的词列表

当你查询一个确切值(exact value)字段,查询将不分析查询字符串,但是你可以自己指定(会匹配对应的类型,如果类型不一样,可能查询不到)

测试分析器

GET /_analyze?analyzer=standard&text=Text to analyze

 

映射

每个类型拥有自己的映射(mapping)或者模式定义(schema definition)

elasticsearch支持以下简单字段类型

类型          表示的数据类型

String        string

Whole number    byte,short,integer,long

Floating point     float,double

Boolean       boolean

Date         date

 

当索引一个包含新字段的文档——一个之前没有的字段——Elasticsearch将使用动态映射猜测字段类型,这些类型来自于JSON的基本数据类型

JOSN type            Field type

Booleab: true or false       "boolean"

Whole number: 123        "long"

Floating point: 123.45       "double"

String,valid date:"2014-09-15"   "date"

String:"foo bar"          "string"   

 

注意:字符串“”123“”,会被映射成string类型而不是long类型

GET /gb/_mapping/tweet        查看类型

 

 

返回参数

hits          包含匹配到的文档的总数

_score         相关性得分,衡量了文档与查询的匹配程度

took          整个请求花费了多少秒

time_out        查询是否超时(可以设置超时时间 GET /_search?timeout=1s  )会返回超时之前收集到的结果

 

空搜索

GET /_search

多索引和多类别

/gb,us/_search
在索引gb和us的所有类型中搜素


/g*,u*/_search
在索引以g开头和以u开头的所有;类型中搜索


/gb,us/user,tweet/_search
在索引gb和us的类型为user和twet中搜索


/_all/user,tweet/_search
在所有索引的user和tweet中搜索

简易搜索

GET /_all/tweet/_search?q=tweet:elasticsearch         查询类型为tweet且tweet字段为elasticsearch的值

 

posted on 2018-05-06 22:54  13725566749  阅读(116)  评论(0编辑  收藏  举报