最近在读Elasticsearch的书,准备把英文版翻译出来,此处先把看书中用到的一些常用查询列出来,以备以后查询。
搜索方法:
- /_search 查询所有索引和类型
- /gb/_search 查询gb索引的全部类型
- /gb,us/_search 查询gb和us索引的全部类型
- /g,u/_search 查询以g或者u开头的索引的全部类型
- /gb/user/_search 查询gb索引的user类型
- /gb,us/user,tweet/_search 查询gb和us索引的user和tweet类型
- /all/user,tweet/search 查询全部索引中的user和tweet类型
测试分词
- GET /_analyze?analyzer=standard
查看gb索引中tweet类型的mapping:
- GET /gb/_mapping/tweet
查询和过滤
- 查询是按照搜索条件和匹配度获取结果,而过滤更关注某个字段是否匹配相应的过滤条件
- 性能方面,过滤能更快的计算结果,而且过滤返回的结果可以缓存以便在子查询中用,而查询由于是按照相关度匹配,结果是不能缓存的
- 使用条件:通常来说,如果是进行全文检索或者某个条件会影响匹配度的话,就用查询语句,其他情况下都可以用过滤语句
重要的查询和过滤
- term过滤:用精确条件过滤字段,可以是数字、日期、布尔型和未经处理的字符串
{ "term": { "age": 26 }}
{ "term": { "date": "2014-09-01" }}
{ "term": { "public": true }}
{ "term": { "tag": "full_text" }}
terms过滤:可以同时指定多个过滤用的匹配字段
{ "terms": { "tag": [ "search", "full_text", "nosql" ] }}
ranger过滤:按照ranger指定的范围进行过滤
{
"range": {
"age": {
"gte": 20,
"lt": 30
}
}
}
可以接受的判断条件:
gt:greater than
gte:greater than or equal to
lt:less than
lte:
> less than or equal to
未完待续。。。