• ElasticSearch 设置某个字段不分词


    先说结论:字段类型更改为 'keyword'

    elasticSearch官方文档中创建index代码如下

    复制代码
    PUT /my_store 
    {
        "mappings" : {
            "products" : {
                "properties" : {
                    "productID" : {
                        "type" : "string",
                        "index" : "not_analyzed" 
                    }
                }
            }
        }
    
    }
    复制代码

    由于es官方文档版本基于2.x编写,而本人安装版本为6.6 在执行如上代码过程中出现如下错误

    No handler for type [string] declared on field [productID]

     这里报错是因为ElasticSearch5.x以上版本没有string类型了,换成了text和keyword作为字符串类型。


    字符串 - text:用于全文索引,该类型的字段将通过分词器进行分词,最终用于构建索引

    字符串 - keyword:不分词,只能搜索该字段的完整的值,只用于 filtering

    此时我们将文档中代码更改为如下

    复制代码
    PUT /my_store 
    {
        "mappings" : {
            "products" : {
                "properties" : {
                    "productID" : {
                        "type" : "keyword",
                        "index": true
                    }
                }
            }
        }
    }
    复制代码

     创建成功,此时我们进行查询试试看

    复制代码
    GET /my_store/products/_search
    {
        "query" : {
            "constant_score" : {
                "filter" : {
                    "term" : {
                        "productID" : "XHDK-A-1293-#fJ3"
                    }
                }
            }
        }
    }
    复制代码

  • 相关阅读:
    socket communication between a Java and/or C++ programs (现成的程序)
    java和asp.net之间web Service的创建和调用(2)
    linux下自动启动tomcat
    什么是CPU架构
    Eclipse for Linux on POWER 的安装和使用
    linux开机启动tomcat6
    揭开Socket编程的面纱
    认识错误 武胜
    MySqlCommand, MySqlParameter and "LIKE" with percent symbol zt 武胜
    设置zedgraph鼠标拖拽和局部放大属性 转 武胜
  • 原文地址:https://www.cnblogs.com/cfas/p/16142883.html
Copyright © 2020-2023  润新知