搜索查询——自定义查询

源码

自定义一种查询,类似于 terms

terms 查询的写法入下

{"terms": {"id": [1, 3]}
}

我们定义一种支持按照分隔符,分隔后再进行 term 匹配的查询,名字叫 spiltToTerms,写法入下

{"spiltToTerms": {"sep": ",","field": "id","terms": "1,3"}
}

spiltToTerms 查询的实现是:先使用分隔符 septerms 进行分隔,分隔后再构造一个 terms 查询

体验

可以执行 docker 目录下的脚本

  • setup.sh: 安装es环境,包含elasticsearch和kibana
  • package.sh: 源码编译打包
  • install.sh: 打包好的插件安装到es容器,并重启生效
  • destory.sh: 销毁docker容器

使用docker安装es环境

# https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docker.html
# https://www.elastic.co/guide/en/kibana/5.5/_configuring_kibana_on_docker.html
version: '2'
services:es_for_plugins_demo:image: docker.elastic.co/elasticsearch/elasticsearch:5.3.3container_name: es_for_plugins_demoenvironment:- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1mem_limit: 1gports:- 9200:9200networks:- es_netkibana_for_plugins_demo:image: docker.elastic.co/kibana/kibana:5.3.3container_name: kibana_for_plugins_demoenvironment:ELASTICSEARCH_URL: http://es_for_plugins_demo:9200ports:- 5601:5601networks:- es_netvolumes:esdata1:driver: localesdata2:driver: localnetworks:es_net:

执行命令

docker-compose -p es-for-plugin-demo up -d
#默认密码elastic:changeme

编译源码打包插件

项目根目录下执行

mvn clean package -Dmaven.test.skip=true

安装插件

执行脚本

es_container=es_for_plugins_demo
docker exec $es_container /usr/share/elasticsearch/bin/elasticsearch-plugin remove es-plugin-search-demo
docker cp ../search-plugin-demo/target/releases/search-plugin-demo-1.0-SNAPSHOT.zip $es_container:/usr/share/elasticsearch/search-plugin-demo-1.0-SNAPSHOT.zip
docker exec $es_container /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///usr/share/elasticsearch/search-plugin-demo-1.0-SNAPSHOT.zipdocker restart $es_container

登录kibana体验

http://localhost:5601/app/kibana#/dev_tools/console

默认密码elastic:changeme

# 创建索引
PUT a# 添加数据
PUT a/doc/1
{"id": 1
}PUT a/doc/2
{"id": 2
}PUT a/doc/3
{"id": 3
}

使用自定义的查询进行搜索

GET a/doc/_search
{"query": {"spiltToTerms": {"sep": ",","field": "id","terms": "1,3"}}
}

Elasticsearch插件开发之自定义搜索语法相关推荐

  1. ElasticSearch搜索语法进阶学习(搜索+聚合,过滤+聚合)

    ElasticSearch聚合+搜索语法学习 目录 搜索+聚合:统计指定品牌下每个颜色的销量 global bucket:单个品牌与所有品牌销量对比 过滤+聚合:统计价格大于1200的电视平均价格 b ...

  2. ElasticSearch搜索语法学习(term,filter,bool,terms,range)

    ES搜索语法学习 目录 原始数据 term,filter使用 bool组合多个filter条件来搜索数据 terms搜索多个值以及多值搜索结果优化 基于range filter来进行范围过滤 手动控制 ...

  3. 〈三〉ElasticSearch的认识:搜索、过滤、排序

    目录 上节回顾 本节前言 文档的搜索 URL参数条件搜索 请求体条件搜索 语法与示例: 补充: 小节总结: 文档的过滤filter 语法与举例: filter与bool constant_score ...

  4. elk 搜索 语法_ELK学习笔记7| Lucence 的搜索语法

    在kibana进行搜索时,可以使用Lucence 通用的语法,或者使用 JSON 格式 QueryDSL (DSL:Digital Subscriber Line)来进行各项搜索请求.Apache L ...

  5. ElasticSearch 2 (16) - 深入搜索系列之近似度匹配

    ElasticSearch 2 (16) - 深入搜索系列之近似度匹配 摘要 标准的全文搜索使用TF/IDF处理文档.文档里的每个字段或一袋子词.match 查询可以告诉我们哪个袋子里面包含我们搜索的 ...

  6. 如何使用Elasticsearch构建强大的搜索和分析应用程序(2023年最新ES新手教程)

    1.Elasticsearch 非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容 什么是elasticsearch 一个开源的分布式搜索引擎,可以用来实现搜索.日志统计.分析.系统监 ...

  7. elasticsearch analysis模块 自定义分词 拼音分词 同义词 停词

    Analysis Analysis 解析器由三个模块=character filters(字符过滤器), tokenizers(标记器), and token filters(标记过滤器)组成 Ana ...

  8. 使用ElasticSearch进行文档搜索

    1.ElasticSearch 概念特点 全文搜索是对非结构化数据的一种搜索方式,所谓非结构化数据是指相对于结构化数据(如数据库)来说长度不固定或无固定格式的数据,例如文档.邮件等. 对非结构化数据的 ...

  9. 谷歌搜索技巧大全 | 谷歌高级搜索语法指令

    在这里我们将分享最实用的Google搜索技巧,让你能够最大限度地利用这个全球最流行的搜索引擎. 内容较多,分为上下篇. 上篇点此:谷歌搜索技巧大全 | 谷歌高级搜索语法指令(上) 本期分享下篇. 谷歌 ...

最新文章

  1. 强大:MyBatis 流式查询
  2. 平衡二叉树及其应用场景
  3. mysql log位置_MySql: log 位置
  4. bash shell基础之三字符串测试及for循环
  5. 初二物理模型有哪些_初二是成绩下滑的高危期,做好这5点成绩涨涨涨!(附全学科提升技巧,家长转给孩子!)...
  6. UVALive - 6440
  7. mysql dump h_mysqldump
  8. python mysql 连接超时时间_一段时间后MySQL连接超时(Python、MySQL、FLASK)
  9. 苹果CMSv10新手入门安装必看教程
  10. IconFont使用方式简介
  11. 前端学习--Bable的使用步骤
  12. 项目经理如何做好项目管理PMP - 持续更新
  13. mybatis-plus和mysql
  14. OpenGL学习随笔(三)——2022.1.24
  15. (free)Windows下的stegdetect下载链接
  16. Transformer的PyTorch实现(超详细)
  17. matlab thd 论坛,matlab如何仿真thd
  18. 库卡工业机器人负载曲线图_DC电机性能曲线图
  19. 安卓手机管理_安卓手机清理大师app下载-安卓手机清理大师下载v1.0.0安卓版
  20. 晶振噪声及杂散_关于晶振的知识

热门文章

  1. 软件项目需求分析困难的原因
  2. 容器组件(Container)
  3. uniapp 系统消息的接受和ios透传进行数据推送到消息栏
  4. linux qos mq,Pika + RabbitMQ:将basic_qos设置为prefetch = 1仍然会消耗队列中的所有消息...
  5. LCD与DLP投影仪原理简介
  6. 线下连锁+全渠道营销新零售系统为疫情下的实体连锁门店赋能增长
  7. Python OpenCV -- Canny 边缘检测 (十一)
  8. 愿你三冬暖愿你春不寒--喜欢的诗
  9. 数据治理:如何建立数据共享机制
  10. 销售如何用套路运作一个项目?项目成功经验分享