Search API(Request Body Search)
- Match Query(字段类查询)
对字段作全文检索,最基本和常用的查询类型(不支持多字段查询)
GET test_search_index/_search
{
“profile”:true, # 显示执行计划
“query”:{
“match”: {
“username”: “alfred way”
}
}
}
通过operator参数可以控制单词间的匹配关系,可选项为or和and
- Match_phrase(词语查询)
要求词语的顺序
GET test_search_index/_search
{
“query”: {
“match_phrase”: {
“job”: “java engineer”
}
}
}
Slop:允许有几个词的差异
GET test_search_index/_search
{
“query”: {
“match_phrase”: {
“job”: {
“query”:”java engineer”,
“slop”:1
}
}
}
}
- 字符查询
可以完成多字段—>匹配相同查询规则
GET test_search_index/_search
{
“query”:{
“query_string”: {
“default_field”: “username”,
“query”: “alfred OR (java AND ruby)”
}
}
}
GET test_search_index/_search
{
“query”:{
“query_string”: {
“fields”: [“username”,”job”],
“query”: “alfred OR (java AND ruby)”
}
}
}
- 不分词查询(根据分词具体情况查询)
GET test_search_index/_search
{
“query”: {
“term”: {
“username”: {
“value”: “alfred way”
}
}
}
}
GET test_search_index/_search
{
“query”: {
“terms”: {
“username”: [
“alfred”,
“way”
]
}
}
}
- Range查询
GET test_search_index/_search
{
“query”: {
“range”: {
“age”: {
“gte”: 10,
“lte”: 20
}
}
}
}
- Bool Query
filter | 只过滤符合条件的文档,不计算相关性得分 |
must | 文档必须符合must中的所有条件,会影响相关性得分 |
must_not | 文档中必须不符合must_not中的所有条件 |
should | 文档可以符合should中的条件,会影响相关性得分 |
语法:
Filter:只过滤符合条件文档,不会影响相关性算分,同时ES对filter有缓存功能,提高查询效率
GET test_search_index/_search
{
“query”: {
“bool”: {
“filter”: [
{
“match”:{
“username”:”alfred”
}
}
]
}
}
}
GET test_search_index/_search
{
“query”: {
“bool”: {
“filter”: [
{
“term”:{
“username”:”alfred”
}
},
{
“term”:{
“job”:”jav”
}
}
]
}
}
}
Must:影响相关性算分
GET test_search_index/_search
{
“query”: {
“bool”: {
“must”: [
{
“match”: {
“username”: “alfred”
}
},
{
“match”: {
“job”: “java”
}
}
]
}
}
}
Should包含其中一个或多个
包含其中一个
GET test_search_index/_search
{
“query”: {
“bool”: {
“should”: [
{
“match”: {
“username”: “alfred”
}
},
{
“match”: {
“job”: “ruby”
}
}
],
“minimum_should_match”: 2
}
}
}
想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量java培训课程视频供广大学员下载学习。