Elasticsearch ik分词同时支持分词匹配与精确匹配

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放大点。我一开始就遇到了搜索结果不对,用“万元”总是搜不到“万元人民币”。