https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
https://my.oschina.net/u/856051/blog/1486979
1,轻量搜索
查询tweet字段包含elasticsearch字符的文档
GET /_all/tweet/_search?q=tweet:elasticsearch
多查询字段查询GET /_all/tweet/_search?+name:john +tweet:mary
+ 前缀表示必须与查询条件匹配。类似地, - 前缀表示一定不与查询条件匹配。没有 + 或者 - 的所有其他条件都是可选的——匹配的越多,文档就越相关。
全文检索:_all
2,映射
es对输入的每个字符类型都需要进行映射
- 字符串:
string
- 整数 :
byte
,short
,integer
,long
- 浮点数:
float
,double
- 布尔型:
boolean
- 日期:
date
es也可以自定义数据类型。
当你索引一个包含新域的文档--之前未曾出现-- Elasticsearch 会使用 动态映射 ,通过JSON中基本数据类型,尝试猜测域类型,使用如下规则:
JSON type | 域 type |
布尔型: |
|
整数: |
|
浮点数: |
|
字符串,有效日期: |
|
字符串: |
|
获取es数据类型
http://localhost:9200/index/_mapping/type?pretty
3,复杂搜索
查询表达式(Query DSL),以及复合(Compound) 语句,eg
GET /_search { "query": { "match": { "tweet": "elasticsearch" } } }
es查询分两种机制:过滤和查询
过滤,符合条件,选出,不符合条件,删除。且过滤会被缓存。
查询:当使用于 查询情况 时,查询就变成了一个“评分”的查询。和不评分的查询类似,也要去判断这个文档是否匹配,同时它还需要判断这个文档匹配的有 _多好_(匹配程度如何)。最后变成score在结果中显示。
3,高亮功能
4,自定义数据类型;
define:对时间格式进行自定义:
curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"name" : {
"type" : "string"
},
"user_id" : {
"type" : "long"
}
}
}
}
}
'
put:
curl -XPUT 'localhost:9200/my_index/my_type/123?pretty' -H 'Content-Type: application/json' -d'
{
"user_id": 1,
"name": "Just trying this out...",
"date": "2014-01-01 08:08:08"
}
show:
技术组老大搞es date类型:
因为这个T搞得我非常狼狈,明明是这个leader的技术问题,可以自定义标准的yyyy-MM-dd HH:mm:ss,却说只能用es自带的带T格式,带Z格式的时间,搞得我现在这么惨。哎,算了,男人的胸怀是被委屈撑大的。真tm的苦逼。