ElasticSearch初探之所有初次使用记录(七)部分java api+停用词+同义词

1.数据源于
2.加载数据:

 curl -s -XPOST http://172.22.112.1:9200/_bulk --data-binary @elasticsearch.txt

-S:显示错误,-s静默模式
【上传数据时,中途kill,不会部分上传成功,皆失败】

3.设置分词器
在没有设置分词器之前,ES会将汉字单个切分(当安装完Elasticsearch之后,默认已经含有一个分词法,叫做“standard”,对中文的支持较差),比如搜索:

http://172.22.112.1:9200/listing_new/listing/_search?q=category_name:海水,
GET /listing_new/listing/_search?q=category_name:%E6%B5%B7%E6%B0%B4

会出来“海鲜水产”,而我们可能希望“海水”二字并不分开。
安装分词器:

.\elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.8/ela sticsearch-analysis-ik-5.6.8.zip

重启ES;
删除之前自动生成的索引:

DELETE /listing_new

在创建index之前新建mapping
- 默认_all是开启的(也就是说,不指定字段时会检索所有没有禁用_all参数的字段),通过”_all”: { “enabled”: false }来禁用

  • 对于一个索引来说,number_of_shards只能设置一次(默认为5),而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少。number_of_replicas默认为1。
  • 如果你想禁止自动创建索引,你可以在 config/elasticsearch.yml 的每个节点下添加下面的配置:
    action.auto_create_index: false
  • 在lucen中:
    1. analyzer——分析器,这里的ik分词器有ik-smart模式和ik-max_word两种模式,前者为粗粒度的划分,后者为细粒度。粗粒度也意味着准确率高,但是因为粗粒度划分,所以其检索出来的结果就少,所以召回率低。【如果字段指定了分析器(对应Lucen中的Index.ANALYZED),就会被“分割”,并存入倒排索引;如果不指定,Lucen中的Index.NOT_ANALYZED,不做任何分词操作,直接存入倒排索引,因此适用于手机号、URL等类型的数据(也可以通过指定字段为keyword来实现)】
    2. 索引器:新建索引以及打开索引、向索引中添加、删除、修改文档
    3. 查询解析器
      自定义分词器
## 手动设置mapping,ik
PUT /listing_new
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 0,
    "analysis": {
      "analyzer": {
        "ik": {
          "tokenizer": "ik_smart"
        }
      }
    }
  }, 
  "mappings": {
      "listing": {
        "dynamic": true,
        "properties": {
          "listing_title": {
            "type": "text",
            "analyzer": "ik"
          },
          "category_name": {
            "type": "text",
            "analyzer": "ik"
          },
          "listing_id": {
            "type": "long"
          },
          "category_id": {
            "type": "long"
          }
        }
      }
  }
}

报错:"Custom Analyzer [ik] failed to find tokenizer under name [ik_smart]"
安装分词器后需要重启集群,不需要设置index.analysis.analyzer.ik.type : “ik”

再次执行查询:http://172.22.112.1:9200/listing_new/listing/_search?q=category_name:海水可以看到无命中

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值