CentOS 6.4下Elasticsearch 的安装和基本使用(5)

查询作者是名字包含 “jam” 的文档,返回 id 是 2和3 的文档

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "match": { "author": "jam" } } }'

查询文章内容包含 “更新” 的文档,返回 id 是 4 的文档

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "match": { "content": "更新" } } }'

2、过滤语句
1> term 过滤,主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型)
查询作者是 jam 的文档,返回 id 是 2 和 3 的文档

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "term": { "author": "jam" } } }'

2> terms 过滤,跟 term 有点类似,但 terms 允许指定多个匹配条件
查询作者是 jam 、tomi 的文档,返回 id 是2,3,4 的文档

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "terms": { "author": ["jam","tomi"] } } }'

3> range 过滤,指定范围查找
查找 id 范围是 大于等于2,小余4 的文档,返回 id 是2,3 的文档

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "range": { "id": { "gte": 2, "lt": 4 } } } }'

gt:大于
gte :大于等于
lt:小于
lte:小于等于

4> bool 过滤
可以合并多个过滤条件查询结果的布尔逻辑,它有三个操作符

操作符释义
must   多个查询条件的完全匹配,相当于 and  
must_not   多个查询条件的相反匹配,相当于 not  
should   至少有一个查询条件匹配, 相当于 or  

查找作者是 jam (查出 id 为 2,3 的文档),但是 id 不能为 2 的文档,返回 id 为 3的文档(should 就自己测试吧)

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "bool": { "must": { "term": { "author": "jam" }}, "must_not": { "term": { "id": 2 }} } } }'

提示:做精确匹配搜索时,你最好用过滤语句,因为过滤语句可以缓存数据

3、查询语句
1> multi_match 查询,同时搜索多个字段
查询 subject 或者 content 字段中有 “更新” 二字的文档,返回 id 为 4 的文档,由于用的分词器是 standard ,它会把 “更新” 拆成 “更”、”新” 来查找

curl -XGET 'https://localhost:9200/test/article/_search?pretty' -d ' { "query": { "multi_match": { "query": "更新", "fields": ["subject", "content"] } } }'

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a838567fb1c3487d0fb9125155debba5.html