elasticsearch7.x基本搜索(搜索)

match分词搜索

全文搜索

  • match_all 搜索全部
GET xxx/_search
{
	"query":{
		"match_all":{}
	}
}

匹配单字段搜索

  • field 字段名
GET xxx/_search
{
	"query":{
		"match":{
			"field":"内容"
		}
	}
}

匹配单字段多词组搜索

  • filed 字段名,词组使用空格隔开

注意:数据应该保存成为一个数组

GET xxx/_search
{
	"query":{
		"match":{
			"field":"内容1 内容2 内容3"
		}
	}
}

匹配多字段搜索

  • must相当于MySQL条件中的 AND
  • should相当于MySQL条件中的 OR

must

GET xxx/_search
{
	"query":{
		"bool":{
			"must":[
			{
				"match":{
					"field1":"content"
				}
			},
			{
				"match":{
					"field2":"content"
				}
			}
			]
		}
	}
}

should

GET xxx/_search
{
	"query":{
		"bool":{
			"should":[
				{
					"match":{
						"field1":"content"
					}
				},
				{
					"match":{
						"field2":"content"
					}
				}
			]
		}
	}
}

匹配多字段搜索相同内容

  • multi_match 多字段
  • query 搜索内容
  • fields 搜索的字段
  • operator 字段的匹配方式 ,属性有OR, AND
GET xxx/_search
{
	"query":{
		"multi_match": {
	        "query": "content",
	        "fields": ["field_name1", "field_name2"],
	        "operator": "OR"
		}
    }
}

搜索分页

  • from 起始数
  • size 获得的数量
GET xxx/_search
{
	"query":{
		"match_all":{}
	},
	"from":0,
	"size":10
}

搜索过滤

  • filter 过滤
  • field 要过滤的字段名
  • gte 大于等于 附加 gt 大于
  • lte 小于等于 附加 lt 小于
GET xxx/_search
{
	"query":{
		"bool":{
			"should":[
				{
					"match_all":{}
				}
			],
			"filter":{
				"range":{
					"field":{
						"gte":22,
						"lte":23
					}
				}
			}
		}
	}
}

term精确搜索

精确搜索

  • term 精确查找(单个)
  • terms 精确查找(多个)

注意:这里的字段类型应保证为非分词的类型,如:keyword

term

{
	"query":{
		"term": {
	        "_id":1
		}
    }
}

terms

{
	"query":{
		"terms": {
	        "_id":[1,2,3]
		}
    }
}

term高亮搜索

高亮搜索

  • highlight 高亮查找
  • pre_tags 标签前缀
  • post_tags 标签后缀
  • fields 规定的字段,支持多个

注意:如果不声明前缀和后缀,那边默认使用

{
	"query":{
		"match":{
			"field":"content"
		}
	},
	"highlight":{
		"pre_tags":"

", "post_tags":"

"
, "fields":{ "field":{} } } }

知识源于学习

你可能感兴趣的:(ElasticSearch)