Elasticsearch 简单的搜索设置优化,分词搜索和关键词搜索同时检索

 数据库/缓存  2023-02-14  admin  712  961

      使用 Elasticsearch 对某个字符串字段进行模糊查询的时候,可能因为该字段是text类型而搜索不到,因为text类型会将字符串进行分词之后存入索引,那么我们在模糊查询的时候其实是基于已分词的词组进行的模糊查询,这样会导致本来应该查询出来的数据有可能会查询不到。可以通过keyword来进行精确匹配。text会对字段进行分词处理而keyword则不会进行分词。也就是说如果字段是text类型,存入的数据会先进行分词,然后将分完词的词组存入索引,而keyword则不会进行分词,直接存储。


Elasticsearch 的 text 类型的数据被用来索引长文本,例如文章简介或者一款产品的介绍,这些文本会被分析,在建立索引文档之前会被分词器进行分词,转化为词组。经过分词机制之后允许检索到该文本切分而成的词语,但是text类型的数据不能用来过滤、排序和聚合等操作


keyword类型的数据可以满足关键字、姓名、邮箱地址、主机名、状态码、手机号和标签等数据的要求,不进行分词,常常被用来过滤、排序和聚合等操作


"mappings": {
        "_doc": {
            "properties": {
                "title2": {
                    "analyzer": "ik_max_word",
                    "type": "text"
                },
                "title": {
                    "analyzer": "ik_max_word",
                    "type": "text",
                    "fields": {
                        "title3": {
                            "type": "text"
                        },
                        "title4": {
                            "ignore_above": 256,
                            "type": "keyword"
                        }
                    }
                }
            }
        }
    },

查询设置

{
    "explain": false,
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "title": "空"
                    }
                },
                {
                    "match": {
                        "title.title3": "空"
                    }
                }
            ]
        }
    }
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


phpstorm 设置 外部命令

C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.20.11781.0_x64__8wekyb3d8bbwe\wt.exe-d $ContentRoot$$ProjectFileDir$

点名工具,抽奖软件

点名工具,抽奖软件

酷炫的倒计时客户端

QQ: 425100867捐赠开发者:

go 的加减乘除运算注意事项,及相互转化问题

packagemain import( "fmt" ) funcmain(){ varintAint=10 varintBint=9 varfloatAfloat64=10 varfloatBfloat64=9 //在Go语言中,操作数的类型必须匹配。也就是说,进行运算时,操作数的类型必须一致或能够进行合理的转换。 //具体来说