elasticsearch系列(七)java定义score
概述
ES支持groovy 和 java两种语言自定义score的计算方法,groovy甚至可以嵌套在请求的参数中,有点厉害,不过不在本篇讨论范围。
如何用自定义的java代码来定义score如何产生,这用到了ES的插件功能
关于es插件的相关操作,可以通过以下命令获得
./bin elasticsearch-plugn –h
操作步骤
1.增加配置
首先需要在ES的配置中增加以下,
旧版本是
script.disable_dynamic: false
目前用的ES是5.2.2,根据日志提示,改成如下,改完后需要重启ES
script.inline: true script.stored: true
不得不说这个日志提供的信息真不错
如果不加这两条配置,则会这样这种错误
2.写java代码
//java代码格式参考
https://www.elastic.co/guide/en/elasticsearch/reference/5.2/modules-scripting-native.html
3.写配置文件
配置文件格式参考
4.上传到ES集群
在$ELASTICSEARCH_HOME/plugins新建一个文件夹,这个文件夹的名称就是这个插件的名称,
例如有 三个文件夹
可以通过如下命令找到他们
在新建的文件夹中,导入jar包和plugin-descriptor.properties文件(必须有)
5.重启ES服务
kill -9 pid
nohup ./elasticsearch &
6.使用
{ "query": { "function_score": { "query": { "match": { "your_fields": "xxxx" } }, "functions": [ { "script_score": { "script": { "inline": "key", "lang": "native", "params": { "your_fields": "xxxxx" } } } } ] } } }
key解释:
Key |
解释 |
备注 |
inline |
调用插件的key,和插件名称是两个东西 |
在NativeScriptFactory接口中的 getName()方法设置 |
lang |
自定义方式 |
native意思是用java原生实现 |
//关于自定义function-script-score
7.更新插件
由于ES集群会缓存插件代码,就算把插件删了依然可用,目前还是需要重启来更新插件
参考资料
//自定义java制作插件必要的步骤
https://www.elastic.co/guide/en/elasticsearch/plugins/5.2/plugin-authors.html#_plugin_structure
//github完整插件
https://github.com/momoxixi/elasticsearch-feature-vector-scoring
elasticsearch系列(七)java定义score的更多相关文章
- elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RE ...
- Elasticsearch系列(五)----JAVA客户端之TransportClient操作详解
Elasticsearch JAVA操作有三种客户端: 1.TransportClient 2.JestClient 3.RestClient 还有种是2.3中有的NodeClient,在5.5.1中 ...
- elasticsearch系列(五)score
概述 score在ES中有着很重要的作用,有了它才有了rank,是验证文档相关性的关键数据,score越大代表匹配到的文档相关性越大 官方解释 查询的时候可以用explain来展示score的计算过程 ...
- java多线程系列(七)---Callable、Future和FutureTask
Callable.Future和FutureTask 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量 ...
- java基础解析系列(七)---ThreadLocal原理分析
java基础解析系列(七)---ThreadLocal原理分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...
- ELK系列七:Elasticsearch的集群配置和监控以及在部署ELK中踩的坑
1.基本下载安装 #按照ELK系列一博客安装启动即可,没有大坑,注意一下权限即可 chmod -R 777 ./elasticsearch #此外没有java的,注意安装下JDK,我这次部署的环境是C ...
- Elasticsearch笔记七之setting,mapping,分片查询方式
Elasticsearch笔记七之setting,mapping,分片查询方式 setting 通过setting可以更改es配置可以用来修改副本数和分片数. 1:查看,通过curl或浏览器可以看到副 ...
- struts2官方 中文教程 系列七:消息资源文件
介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...
- Java总结篇系列:Java String
String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐,然而,在使用String过程中,又有较多需要注意的细节之处. 1 ...
随机推荐
- CLR via 笔记4.2 类型转换 is 与 as 区别
is 和 as 操作符是用来进行强制类型转换的 is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常 object o = new object(); if (o i ...
- PacificA: Replication in Log-Based Distributed Storage Systems
PacificA: Replication in Log-Based Distributed Storage Systems - Microsoft Research https://www.micr ...
- 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式
Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...
- mysql数据库基本知识,简单框架
https://www.cnblogs.com/geaozhang/p/7347950.html
- Azkaban简介及使用
一.Azkaban概述 Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性问题. 我们有需要按顺序运行的工作,从ETL工作到数据分析产品. 特点: 1)给用 ...
- apt-get 报 The following signatures were invalid: KEYEXPIRED 错误
apt-get 原理: 参考:https://blog.csdn.net/a13526758473/article/details/79247478 apt对它所管理的每一个程序包都有一对公钥和私钥, ...
- app瘦身和包压缩技术有什么区别?
APP瘦身 针对app文件中的文件进行优化,利用素材的拉伸,祛除不必要的文件,优化png, jpg素材,压缩音视频素材等方式实现app文件的减小. 包压缩技术 所谓包压缩,顾名思义就是将手游的安装包体 ...
- Jmeter(八)Jmeter监控tomcat
1.配置tomcat的配置文件conf/tomcat-users.xml 2. 在“线程组”上右键“添加”--“配置元件”--“HTTP授权管理器”,这里主要是让JMeter能够通过Tomcat的基本 ...
- JSON-RPC(jsonrpc4j)使用demo
服务端开发,在很多情况下,需要使用到RPC框架,今天发现一款很轻量的RPC框架--JSON-RPC.json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统.不同环境 ...
- 编译安装MariaDB-10.0.21
一.源码编译安装gcc-5.1.0 1.下载gcc源码包 Download (HTTP): http://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.b ...