初学Elasticsearch遇到的问题

ElasticSearch简介

Elasticsearch是一个实时分布式搜索和分析引擎。 它让你以前所未有的速度处理大数据成为可能。
它用于全文搜索、结构化搜索、分析以及将这三者混合使用:
使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单

ElasticSearch与Solr比较

1、es基本是开箱解压即用,非常简单。Solr安装略微复杂!
2、Solr 利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。
3、Solr 支持更多格式的数据,比如JSON、XML、 CSV ,而Elasticsearch仅支持json文件格式。
4、Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
5、Solr 查询快,但更新索引时慢(即插入删除慢) ,用于电商等查询多的应用;
ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索。
Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用

Elasticsearch RestHighLevelClient的Request execution cancelled异常

在学习ES搭建了一个springboot服务,集成了Elasticsearch RestHighLevelClient实现对es的查询。
发现只要第二次执行插入数据方法,就抛出若干Request execution cancelled异常。
ES版本7.6
后来把Client.close() 关闭注释掉了。
有个疑问 Controller 方法调用完service之后Client 会自动关闭吗?

修改索引分词器

原因:
索引为配置中文分词器(默认使用standard,即所有中文字符串都会被切分为单个中文汉字作为单词),所以没有超过1个汉字的词,也就无法匹配,进而查不到数据。

操作索引必须在创建前或者索引关闭后!

#关闭
POST 索引名/_close  
#修改
PUT 索引名/_settings  
{
    "analysis": {
        "analyzer": {  # 定制化分析器 
            "字段名称": {       
                "type": "ik_max_word",   # 要更换的分词器名字  默认为standard
                "stopwords": "_english_" #_english_为默认的英语停止词集
            }
        }
    }
}
GET 索引名  # 查看索引信息
#打开
POST 索引名/_open

查询不到数据

是因为索引中的字段名称没对上

GET /test3/_doc/_search
{
  "query":{
    "match":{
      "name":"张"  # 竟然是字段名称没对上!!!
    }
  }
  ,
  "_source": ["name","desc"]   #查询结果只显示那些 
  ,
  "sort": [
    {
      "age": {  #排序
        "order": "asc"
      }
    }
  ]
  ,
  "from": 0   #分页
  ,
  "size": 10
}

感谢狂神,资料来源
https://www.kuangstudy.com/bbs/1354069127022583809

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值