
ElasticSearch
搜索引擎专栏
戴国进
往后余生,专注人工智能领域!!!
展开
-
ElasticSearch 7.4 使用查询清空单个索引所有的数据
kibana:POST index_name/type_name/_delete_by_query{ "query": {"match_all": {}}}curl:curl -u用户名:密码 -XPOST '192.168.1.123:9200/index_name/_delete_by_query?refresh&slices=5&pretty' -H 'Content-Type: application/json'-d'{ "query": { ...原创 2021-07-13 15:59:49 · 2505 阅读 · 0 评论 -
elasticSearch 安装词干提取器 hunspell 字典
安装词干字典 :hunspell 在config/elasticsearch.yml中配置hunspell字典的位置 : indices.analysis.hunspell.dictionary.location: /home/es/es7.10.1/config/hunspell 下载字典并以 : en_US - en_US.aff - en_US.dic 这种树形结构将字典文件放入到/home/es/es7.10.1/config/hunspell中,注意是es...转载 2021-02-24 11:13:21 · 2303 阅读 · 0 评论 -
ElasticSearch 7.4.0 对单条数据进行 查询、修改、删除 的操作
参考:https://blog.youkuaiyun.com/feinifi/article/details/100542549 Elasticsearch使用update_by_queryPUT chuyuan/_doc/1{ "name":"xiaolin", "age":30, "sex":"F", "love":["music"], "about":"i love ES"}GET chuyuan/_doc/1GET chuyuan/_doc/1?_so...转载 2021-02-11 14:30:34 · 5573 阅读 · 0 评论 -
ES query_string 和 match的区别
今天线上发现一个问题,从而引出对query_string 和 match 的区别的思考。curl -XGET ‘http://localhost:9200/*/offer/_search?pretty‘ -d ‘{"from" : 0,"size" : 10,"fields" : ["title"],"query": {"query_string" : {"query" : "100CrMo7 +圆钢","fields" : ["title"]} }}‘原创 2021-01-19 21:45:22 · 5703 阅读 · 0 评论 -
es bool多条件查询should和must同时使用注意
今天在使用must,must_not,should的使用的时候,发现了以下博客https://blog.youkuaiyun.com/qq_31748587/article/details/101449613这篇博客中提出的第一个问题,为什么第一种写法should失效了。经过查阅发现:当使用should查询时,如果包含了must或者filter查询,那么should的查询语句就不是或者的意思了,而是有或者没有都行的含义。那么第一种写法的含义就是:性别必须为男,但是分数可以是70,也可以是80,也原创 2020-12-30 19:49:06 · 10263 阅读 · 0 评论 -
elasticsearch.yml 项目实战配置
主节点:cluster.name: online_image_es_pronode.name: eus-image-design-es-kafka01path.data: /data/es/datapath.logs: /data/es/logspath.repo: ["/data/esback"]bootstrap.memory_lock: truebootstrap.system_call_filter: falsenetwork.host: 172.30.0.106http.po原创 2020-11-09 17:42:45 · 5175 阅读 · 0 评论 -
elasticsearch painless 详细教程
何为painless painless的特性 简单的例子 具体例子 初始化数据 用painless获取doc的值 通过painless更新对象值 单条记录更新 批量更新 Dates 记得以前写过一个postman的最强教程,只可惜因为工作的原因,没再继续做测试,最终也没有写完。有点丧。。。这段时间在研究实时日志分析系统ELK,发现围绕ES这个搜索引擎或者说document数据库而开发的各种工具和周边居然是令人震惊的完善。ES真的不单单是一个...转载 2020-10-21 10:07:39 · 6802 阅读 · 0 评论 -
es 查询语句提升权重 - boost 关键词的使用
其他阅读:https://www.elastic.co/guide/cn/elasticsearch/guide/current/query-time-boosting.html 查询时权重提升 https://www.elastic.co/guide/cn/elasticsearch/guide/current/function-score-filters.html过滤集提升权重当然bool查询不仅限于组合简单的单个词match查询,它可以组合任意其...转载 2020-10-15 21:39:11 · 20789 阅读 · 0 评论 -
es 7.4.0 详解删除记录的方法
_delete_by_query 命令是删除记录post请求:http://localhost:9200/index/_delete_by_query注:删除也是先走和查询一样的语法,只是最后的命令是 删除的命令{ "query":{ "term":{ "bookId":1 } }}这是清空{ "query": { "match_all": {} }}删除后语法{ "took": .原创 2020-10-10 16:58:20 · 8631 阅读 · 2 评论 -
ElasticSearch 7.4.0 mapping新增字段并赋值
一、新增字段请求url:http://111.11.11.111:19200/es的index/_mapping请求方法:put数据格式:{ "es的type": { "properties": { "字段1": { "type": "string" }, "字段2": { "type": "string" } } }}二、给新加字段赋值请求url:http://111.11.11原创 2020-09-28 15:14:02 · 11461 阅读 · 4 评论 -
es修改 mapping 字段数据类型
es创建好了mapping后可以添加新字段,但是不允许修改字段类型的,要是我们想修改字段类型怎么办呢,我们可以采用reindex的方法实现,就是创建一个新的mapping,里面的字段类型按照新的类型定义,然后使用reindex的方法把原来的数据拷贝到新的index下面。1.查看原来的mapping[esuser@localhost ~]$ curl -u elastic:elastic -H "Content-Type: application/json" -XGET "http://192.16原创 2020-09-28 11:54:26 · 8622 阅读 · 0 评论 -
es 一个字段设置多个分词器
参考: https://blog.youkuaiyun.com/qq_32165041/article/details/83688593 Elasticsearch 映射参数 fieldsPUT test_index20{ "mappings": { "doc": { "properties": { "title": { "type": "text", "analyzer": "whitespace", "f..原创 2020-09-28 11:10:25 · 11632 阅读 · 0 评论 -
使用canal实时增量同步mysql数据库数据到ElasticSearch
1.简介1.1 canal介绍Canal是一个基于MySQL二进制日志的高性能数据同步系统。Canal广泛用于阿里巴巴集团(包括https://www.taobao.com),以提供可靠的低延迟增量数据管道,github地址:https://github.com/alibaba/canalCanal Server能够解析MySQL binlog并订阅数据更改,而Canal Client可以实现将更改广播到任何地方,例如数据库和Apache Kafka。它具有以下功能:支持所有平台。 支原创 2020-09-23 15:11:35 · 7149 阅读 · 0 评论 -
Elasticsearch实现英文区分大小写搜索
需求很简单,搜索时,有一个区分大小写的CheckBox,勾选则区分大小写,不勾选正常模糊搜索,或者其他搜索首先搞清楚,ElasticSearch索引英文时默认索引时采用的分析器,会将全部字符转换为小写,所以采用默认分析器是无法实现区分大小写的。最直接的方法就是自定义分词器,{ "analysis": { "analyzer":{ "case_sensitive_analyzer":{ "tokenizer":"standard", "fi.转载 2020-09-05 13:46:29 · 9443 阅读 · 0 评论 -
Elasticsearch 创建索引、查看所有索引和索引的文档数
一、显示所有索引GET _cat/indices二、创建索引可以通过 Elasticsearch 的 RESTFul API 来创建索引:PUT http://127.0.0.1:9200/commodity注意:默认情况下,创建的索引分片数量是 5 个,副本数量是 1 个。您可以通过如下参数来指定分片数、副本数量:{ "settings": { "number_of_shards": 3, "number_of_replicas": 2 }}.原创 2020-08-20 21:29:55 · 10962 阅读 · 0 评论 -
docker运行分布式搜索引擎ES容器max virtual memory areas vm.max_map_count [65530] is too low, increase to at leas
参考:https://www.cnblogs.com/zhi-leaf/p/8484337.html elasticsearch启动常见错误elasticsearch启动如下错误root用户修改配置sysctl.confvi /etc/sysctl.conf添加下面配置vm.max_map_count=655360执行命令sysctl -p重新启动docker...原创 2020-08-03 11:26:30 · 12823 阅读 · 3 评论 -
es日期时间匹配的规则,底层是如何比较日期和时间的以及按照时间查询的几种方式
最近研究es的日期匹配问题,知道es的底层是存储Unix时间戳,并且录入的时间是可以有时区的信息的。目前数据存储有三个数据,两个是0时区数据,一个是东八区数据:{{"date": "2015-01-01T12:10:30Z"}},{{"date": "2015-01-01T12:10:30"}},{{"date": "2015-01-01T12:10:30+08:00"}}当用没带时区信息的语句查询时,三条记录都可以查询出来:{"query": {"range"原创 2020-07-22 09:31:09 · 13824 阅读 · 0 评论 -
ES 排序sort的用法
1.默认排序默认排序是 _score 降序2.相关字段排序GET /megacorp/employee/_search{ “query”:{ “match_all”: { } }, “sort”: { “create_time”: { “order”: “asc” }}}按照create_time从小到大排序3.多字段排序GET /megacorp/employee/_search{ “query”:{ “match_all”: {...原创 2020-07-21 21:59:28 · 22013 阅读 · 5 评论 -
详解 ElasticSearch 中的倒排索引
正排索引在说倒排索引之前我们先说说什么是正排索引。正排索引也称为"前向索引",它是创建倒排索引的基础。这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除。他适合根据文档ID来查询对应的内容。但是在查询一个keyword在哪些文档里包含的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下转载 2020-07-10 14:29:35 · 9750 阅读 · 0 评论 -
使用elasticsearch-php需要注意的match_all和mapping问题
一、前言最近在把ELK升级到7.0之后,发现使用的ES-PHP并不兼容7.0的版本,可能作者正在努力开发新版本中吧。不过身为使用者,目前还是尽量少用7.0的一些新特性吧,兼容旧版本的ES还是可以的。二、问题1、使用match_all报错(1)报错信息:{"error":{"root_cause":[{"type":"parsing_exception","reason":"[match_all] query malformed, no start_object after q...转载 2020-06-30 15:04:00 · 10812 阅读 · 0 评论 -
ElasticSearch V7.4.0: Root mapping definition has unsupported parameters
场景复现请求地址:put http://127.0.0.1:9200/test,请求内容如下:{ "settings": { "analysis": { "analyzer": { "comma": { "type": "pattern", "pattern":"," } } .原创 2020-06-29 21:08:51 · 10002 阅读 · 0 评论 -
ES集群health为yellow解决办法
Logstash导入数据后,Cerebro显示集群health的状态为yellow解决办法1 curl http://localhost:9200/_cat/indices\?v1 curl http://localhost:9200/_cluster/health?pretty=true1 curl -H "Content-Type: application/json" -XPUT 'http://localhost:9200/_settings' -d...原创 2020-06-19 12:28:44 · 11877 阅读 · 0 评论 -
es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
面试题es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?面试官心理分析这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了。第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒。你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 es,或者就是自己玩玩儿 demo,被问到这个问题容易懵逼,显示出你转载 2020-06-18 13:39:52 · 8724 阅读 · 0 评论 -
Elasticsearch 模糊查询
前言模糊查询主要针对文本类型使用。1、当搜索字段是text类型时:由于它会分词,在执行wildcard、regexp、prefix时和es会检查字段中的每个词条,而不是整个字段。2、当搜索字段是keyword类型时:在执行wildcard、regexp、prefix时和es会检查字段中整个文本。性能方面:prefix > wildcard > regexp1、模糊查询之前缀查询-prefixprefix 前缀查询,以下查询示例 表示查出所有姓张的人(名字name以张开头),并转载 2020-06-17 11:14:44 · 12154 阅读 · 0 评论 -
利用Elasticsearch-head对索引进行增删改查
1、RESTful接口使用方法为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口。RESTful接口URL的格式:http://localhost:9200/index/type/[id]其中index、type是必须提供的,id是可选的,不提供es会自动生成。index、type将信息进行分层,利于管理。index可以理解为数据库;type理解为数据表;id相当于数据库表中记录的主键,是唯一的。2、索引文档的创建 将如下一条歌曲信.原创 2020-06-10 17:54:05 · 10219 阅读 · 0 评论 -
ES 分词器analyzer设置,包括创建更新索引时和查询时
analyzer分词器使用的两个情形:1,Index time analysis. 创建或者更新文档时,会对文档进行分词2,Search time analysis. 查询时,对查询语句分词 指定查询时使用哪个分词器的方式有: - 查询时通过analyzer指定分词器 GET test_index/_search{ "query": { "match": { "name": { "query": "lin", ...原创 2020-06-10 19:41:14 · 19643 阅读 · 0 评论 -
ES 的查询关键词解释
match 查询语法如下:title是需要查询的字段名,可以被替换成任何字段。query对应的是所需的查询。比如这里会被拆分成‘php’和‘后台’,应为operator是or,所以ES会去所有数据里的title字段查询包含‘后台’和‘php’的,如果operator为and,这查询的是即包含‘后台’又有‘php’的数据,这应该很好理解。$response = $client->get('localhost:9200/accounts/person/_search', [ ..原创 2020-06-10 18:03:31 · 9051 阅读 · 0 评论 -
ElasticSearch设置用户名密码、忘记密码创建新帐号
版本号:7.4.01.需要在配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启.xpack.security.enabled: truexpack.license.self_generated.type: basicxpack.security.transport.ssl.enabled: true2,执行设置用户名和密码的命令,这里需要为4个用户分别设置密码,elastic, kibana, l...原创 2020-06-10 10:55:45 · 18794 阅读 · 0 评论 -
PHP 的ES搜索操作
首先从ES的支持的字段说起,ES文档中字段有多种类型官方文档。这几个比较常用:text,keyword,integer,float,boolean,object,geo_point(地理坐标),geo_shape(描述地理区域),date.注:不要以为date只能表示 2015-01-01 这种类型,2015/01/01 12:10:30这种类型也一样可以,不像MySQL里面时间还分很多种细分的类型,ES就一个date类型。注意:这里没有列出array,在ES中,array不是一种单独的类.转载 2020-06-09 20:52:30 · 11407 阅读 · 0 评论 -
PHP中使用ElasticSearch (这篇文章的测试环境是ES6.5)
通过composer安装composer require 'elasticsearch/elasticsearch'在代码中引入require 'vendor/autoload.php';use Elasticsearch\ClientBuilder;$client = ClientBuilder::create()->setHosts(['172.16.55.53'])->build();下面循序渐进完成一个简单的添加和搜索的功能。首先要新建一个in..转载 2020-05-29 11:47:25 · 8042 阅读 · 0 评论 -
基于docker安装ElasticSearch集群(单机两节点)
一、安装前准备1、ElasticSearch是基于java的需要安装jdk环境,我这里由于是使用最新版的7.4.0,需要支持LTS,jdk9以上才支持,所以这里我使用openjdk,使用docker直接拉取:docker pull openjdk:9ps:也可以尝试使用openjdk11---docker pull openjdk:112、vm.max_map_count内核设置需要至少设置为262144用于生产#查看vm.max_map_count命令grep ..转载 2020-05-19 10:20:26 · 7738 阅读 · 0 评论