分类 elasticsearch 下的文章

背景

增加字段的时候手残,将 float 类型的字段,加了 " , 自动识别为了 text 类型,想要修改 mapping 的时候发现 Elastic search 的 mapping 建立之后就不能更新了 !!

解决方案

大体方案是 建立一个新的 索引 index_v2, 然后 reindex ,再将旧索引删掉,最后建立一个 alias 到 index_v2

- 阅读剩余部分 -

1. term 匹配 text 类型的字段result为空

term 不建议匹配 type 为 text 并且不是 keyword 的字段,需要 type 为 long 或者 boolean 或者 keyword。
例如 index 的结构:

{
    "size": 25,
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "term": {
                                "cc": {
                                    "value": "Quick Foxes!", // cc 的 type 需要为 keyword 才能匹配到, 因为 term 为完全匹配,这里被分词成 ["Quick", "Foxes"] 所以会匹配不到
                                    "boost": 1
                                }
                            },
                            "match": {
                                 "cc": "Quick Foxes!" // cc的 type 可以为 text
                            }
                        }
                    ]
                }
            }
        }
    },
    "_source": true
}

term 跟 match 的区别详见: term跟math的区别


- 阅读剩余部分 -