SearchTemplate 和 Index Alias 查询
# 一、SearchTemplate
ES对相关性和查询性能都非常重要,对于一个业务的查询,可能会有专门的开发人员去书写业务逻辑,但也同时需要搜索工程师或者性能工程师来优化我们DSL语句,因此DSL语句和业务解耦是非常重要的。
POST _scripts/shopping
{
"script": {
"lang": "mustache",
"source": {
"_source": [
"title","category"
],
"size": 20,
"query": {
"multi_match": {
"query": "{{q}}",
"fields": ["title","category"]
}
}
}
}
}
通过这样的语句,我们在脚本下写入了一个id为shopping的查询脚本,这个脚本主要根据title和category字段进行算分。
GET _scripts/shopping
POST shopping/_search/template
{
"id":"shopping",
"params": {
"q": "小米"
}
}
对shopping索引进行查询的时候,我们就可以使用这个脚本,传入指定的参数即可调用脚本。
# 二、Index Alias
数据是存储在某一个索引下,我们可以通过给索引取别名,通过对别名操作,间接查询原索引。
PUT movies-2019/_doc/1
{
"name":"the matrix",
"rating":5
}
PUT movies-2019/_doc/2
{
"name":"Speed",
"rating":3
}
POST _aliases
{
"actions": [
{
"add": {
"index": "movies-2019",
"alias": "movies-latest"
}
}
]
}
POST movies-latest/_search
{
"query": {
"match_all": {}
}
}
我们在moves-2019索引下创建了两条数据,然后用movies-latest来作为新的别名,通过对这个新的别名操作就可以进行查询。
POST _aliases
{
"actions": [
{
"add": {
"index": "movies-2019",
"alias": "movies-lastest-highrate",
"filter": {
"range": {
"rating": {
"gte": 4
}
}
}
}
}
]
}
POST movies-lastest-highrate/_search
{
"query": {
"match_all": {}
}
}
现在我们给moves-2019索引取了一个新的名字,并且这个索引下,评分必须是大于4的,相当于用这种方法对原索引的数据进行了一个归类。
# 参考
上次更新: 2024/06/29, 15:13:44