1. 在创建索引的时候,mapping的properties这样指定
```json
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
```
2. 搜索的时候,可以使用下面两种方式分别进行分词匹配与精确搜索。(假设name存放的字段为“万元人民币”, “万元”)
1. 分词搜索,这样可以匹配到万元人民币与万元
```
GET /<index>/_search
{
"size": 1000,
"query": {
"match": {
"name": {
"query": "万元"
}
}
}
}
```
2. 精确搜索,这样就只会出来“万元”了,忽略了万元人民币
```
GET /<index>/_search
{
"size": 1000,
"query": {
"match": {
"name.keyword": {
"query": "万元"
}
}
}
}
```
p.s. kibana与elasticsearch-py的默认size都是10,如果搜出结果不对,可以把size放大点。我一开始就遇到了搜索结果不对,用“万元”总是搜不到“万元人民币”。