阅读es文档
This commit is contained in:
@@ -484,6 +484,129 @@ DELETE /my-explicit-mappings-books
|
||||
删除索引将会永久删除其document、shards、元数据。
|
||||
|
||||
|
||||
### 全文本搜索和过滤
|
||||
如下示例展示了如何实现cook blog的搜索功能。
|
||||
#### 创建索引
|
||||
创建`cooking_blog`索引
|
||||
```
|
||||
PUT /cooking_blog
|
||||
```
|
||||
|
||||
为索引定义mapping:
|
||||
```
|
||||
PUT /cooking_blog/_mapping
|
||||
{
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "text",
|
||||
"analyzer": "standard",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"type": "keyword",
|
||||
"ignore_above": 256
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"author": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"date": {
|
||||
"type": "date",
|
||||
"format": "yyyy-MM-dd"
|
||||
},
|
||||
"category": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"rating": {
|
||||
"type": "float"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
上述mapping定义含义如下:
|
||||
- 对于`text`类型的field,如果analyzer没有指定,那么会默认使用`standard` analyzer
|
||||
- 在上述示例中,使用了`multi fields`,将字段既作为`text`来进行全文搜索,又作为`keyword`来进行聚合和排序。在该字段上,既支持全文搜索,又支持青雀匹配和过滤。如果使用dynamic mapping,那么multi-fields将会自动被创建。
|
||||
- `ignore_above`不会索引`keyword`field中超过256个字符长度的值。默认情况下,keyword field其ignore_above的值为256
|
||||
|
||||
> #### multi-field
|
||||
> 对同一个字段按不同的方式进行索引有时候很必要,对于multi-fields,一个字符串类型字段可以被映射到`text`类型用于全文索引,也可以被映射到`keyword`类型用作排序和聚合。
|
||||
>
|
||||
> 示例如下:
|
||||
> ```
|
||||
> PUT my-index-000001
|
||||
> {
|
||||
> "mappings": {
|
||||
> "properties": {
|
||||
> "city": {
|
||||
> "type": "text",
|
||||
> "fields": {
|
||||
> "raw": {
|
||||
> "type": "keyword"
|
||||
> }
|
||||
> }
|
||||
> }
|
||||
> }
|
||||
> }
|
||||
> }
|
||||
>
|
||||
> PUT my-index-000001/_doc/1
|
||||
> {
|
||||
> "city": "New York"
|
||||
> }
|
||||
>
|
||||
> PUT my-index-000001/_doc/2
|
||||
> {
|
||||
> "city": "York"
|
||||
> }
|
||||
>
|
||||
> GET my-index-000001/_search
|
||||
> {
|
||||
> "query": {
|
||||
> "match": {
|
||||
> "city": "york"
|
||||
> }
|
||||
> },
|
||||
> "sort": {
|
||||
> "city.raw": "asc"
|
||||
> },
|
||||
> "aggs": {
|
||||
> "Cities": {
|
||||
> "terms": {
|
||||
> "field": "city.raw"
|
||||
> }
|
||||
> }
|
||||
> }
|
||||
> }
|
||||
> ```
|
||||
|
||||
#### 将blog示例添加到索引中
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user