搜索
概念
映射(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的值