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

 数据库/缓存  2023-02-14  admin  441  595

      使用 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": "空"
                    }
                }
            ]
        }
    }
}


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

相关推荐


go 生成密码 php的 password_hash go实现

packagemain import( "fmt" "golang.org/x/crypto/bcrypt" ) funcmain(){ hashedPassword:=passwordHash("123456") fmt.Println(hashedPassword) hashedPassword=

go 空接口类型的变量的使用

// interface{} 在 Go 中是一个特殊的类型,表示任何类型,类似于 C# 中的 object 类型或 Java 中的 Object 类型。// 它可以接收任何类型的值,但如果我们需要使用其原始类型的值,我们需要进行类型断言。packagemain import( "fmt" ) funcmain(){ //定义一个空接口类型的变量可以给空接口

图片批量转换格式扩展名命工具

图片批量转换格式扩展名命工具图片批量转换格式扩展名命令行工具支持多线程设置,速度极快imageConverterGui.7z

图片批量转换格式扩展名命令行工具

图片批量转换格式扩展名命令行工具支持多线程设置,速度极快imageConverter.7z