查询的基本语法如下:
GET /indexName/_search
{
"query":{
"查询类型":{
"查询条件":"条件值"
}
}
}
match查询:全文检索查询的一种,会对用户输入内容分词,然后去倒排索引库检索,语法:
GET /indexName/_search
{
"query":{
"match":{
"FIELD":"TEXT"
}
}
}
multi_match:与match查询类似,只不过允许同时查询多个字段,语法:
GET /indexName/_search
{
"query":{
"multi_match":{
"query":"TEXT",
"fields":["FIELD1" , "FIELD2"]
}
}
}
match和multi_match的区别:
精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词
term查询:
GET /indexName/_search
{
"query":{
"term":{
"FIELD":{
"value":"VALUE"
}
}
}
}
range查询:
GET /idnexName/_search
{
"query":{
"range":{
"FIELD":{
"gte":10,
"lte":20
}
}
}
}
GET /indexName/_search
{
"query":{
"geo_bounding_box":{
"FIELD":{
"top_left":{
"lat":31.1,
"lon":121.5
},
"bottom_right":{
"lat":30.9,
"lon":121.7
}
}
}
}
}
GET /indexName/_search
{
"query":{
"geo_distance":{
"distance":"15km",
"FIELD":"31.21,121.5"
}
}
}
复合查询:将其他的简单查询组合起来,实现更复杂的搜索逻辑,例如:
使用function score query,可以修改文档的相关性算分,根据新得到的算分排序
算分函数的结果称为function score , 将来会与query score运算,得到新算分,常见的算分函数有:
甲醛模式,定义functionscore与queryscore的运算方式,包括:
function score query定义的三要素是什么
布尔查询是一个或多个查询子句的组合。子查询的组合方式有:
布尔查询是一个或多个查询子句的组合。子查询的组合方式有:
elasticsearch支持对搜索结果排序,默认是根据相关度算分来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。
from+size:
after search:
scroll: