1、按照文档 ES官方文档
聚合是报错的,错误原因是这个字段不是keyboard,是text,默认不支持聚合操作。
解决方法
2、批量取回多个doc
GET /_mget
{
"docs" : [
{
"_index" : "website",
"_type" : "blog",
"_id" : 2
},
{
"_index" : "website",
"_type" : "pageviews",
"_id" : 1,
"_source": "views"
}
]
}
3、批量多个操作
POST /_bulk
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "Cannot create - it already exists" }
{ "index": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "But we can update it" }
3、查看es是如何分析文本的
GET /_analyze
{
"analyzer": "standard", //指定分析器
"text": "Text to analyze",//要分析的文本
}
4、Es 6.x之后,field类型不再支持string,改成text、keyword。text类型默认会被倒排索引,keyword用于精确查找。
PUT /gb/_mapping
{
"properties" : {
"tag1" : {
"type" : "keyword"
}
}
}
注意看tag1 和 tagq
keyword 不分析
text 分析
即使将text的index设置为false,还是会分析
查询
1、请求体查询
2、查询和过滤的区别
总而言之,过滤只有yes or no,如果yes查询结果放入缓存,如果no拜拜,因此性能更高;查询会评估字段与query的匹配度,有分析的过程在里面,虽然es在全文索引方面做得不俗,当我们往往认知的是过滤更快。
一个简单的and查询
GET /gb/_search
{
"query": {
"bool":{
"must":[
{"match":{"tagq":"yesok"}},
{"match":{"tweet":"ins"}}
]
}
}
}
网友评论