Search Template – 解耦程序 & 搜索 DSL
-
Elasticsearch 的查询语句
-
对相关性算分 / 查询性能都⾄关重要
-
在开发初期,虽然可以明确查询参数,但是往 往还不能最终定义查询的DSL的具体结构
-
通过 Search Template 定义⼀个 Contract
-
各司其职,解耦
-
开发⼈员 / 搜索⼯程师 / 性能⼯程师
POST _scripts/tmdb
{
"script": {
"lang": "mustache",
"source": {
"_source": [
"title","overview"
],
"size": 20,
"query": {
"multi_match": {
"query": "{{q}}",
"fields": ["title","overview"]
}
}
}
}
}
使⽤ Search Template 进⾏查询
POST tmdb/_search/template
{
"id":"tmdb",
"params": {
"q": "basketball with cartoon aliens"
}
}
Index Alias 实现零停机运维
image.png使⽤ Alias 创建不同查询的视图
POST _aliases
{
"actions": [
{
"add": {
"index": "movies-2019",
"alias": "movies-lastest-highrate",
"filter": {
"range": {
"rating": {
"gte": 4
}
}
}
}
}
]
}
本节知识点回顾
-
Search Template 的使⽤场景
-
如果通过 Mocha 语法定义⼀个 Search Template
-
Index Alias 的使⽤场景
-
如何创建与使⽤ Index Alias
-
通过 Index Alias 创建不同的查询视图
课程Demo
POST _scripts/tmdb
{
"script": {
"lang": "mustache",
"source": {
"_source": [
"title","overview"
],
"size": 20,
"query": {
"multi_match": {
"query": "{{q}}",
"fields": ["title","overview"]
}
}
}
}
}
DELETE _scripts/tmdb
GET _scripts/tmdb
POST tmdb/_search/template
{
"id":"tmdb",
"params": {
"q": "basketball with cartoon aliens"
}
}
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": {}
}
}
POST _aliases
{
"actions": [
{
"add": {
"index": "movies-2019",
"alias": "movies-lastest-highrate",
"filter": {
"range": {
"rating": {
"gte": 4
}
}
}
}
}
]
}
POST movies-lastest-highrate/_search
{
"query": {
"match_all": {}
}
}
Index Alias 经测试,可以对不同的索引起相同的别名
#Index Alias 经测试,可以对不同的索引起相同的别名
#alias可以指定多个index,但是只能指定一个index用于写入数据
DELETE /titles
DELETE /titles2
PUT /titles
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "english"
}
}
}
}
PUT /titles2
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "english",
"fields": {"std": {"type": "text","analyzer": "standard"}}
}
}
}
}
POST titles/_bulk
{ "index": { "_id": 1 }}
{ "title": "My dog barks" }
{ "index": { "_id": 2 }}
{ "title": "I see a lot of barking dogs on the road " }
POST titles2/_bulk
{ "index": { "_id": 3 }}
{ "title": "My dog barks" }
{ "index": { "_id": 4 }}
{ "title": "I see a lot of barking dogs on the road " }
POST _aliases
{
"actions": [
{
"add": {
"index": "titles",
"alias": "aliastitle"
}
}
]
}
POST _aliases
{
"actions": [
{
"add": {
"index": "titles2",
"alias": "aliastitle"
}
}
]
}
GET /aliastitle/_search
{
"query": {
"multi_match": {
"query": "barking dogs",
"type": "most_fields",
"fields": [ "title", "title.std" ]
}
}
}
GET /aliastitle/_search
{
"query": {
"multi_match": {
"query": "barking dogs",
"type": "most_fields",
"fields": [ "title^10", "title.std" ]
}
}
}
网友评论