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: truescript.stored: true
不得不说这个日志提供的信息真不错
如果不加这两条配置,则会这样这种错误
2.写java代码
//java代码格式参考
https://www.elastic.co/guide/en/elasticsearch/reference/5.2/modules-scripting-native.html
3.写配置文件
配置文件格式参考
https://github.com/elastic/elasticsearch/blob/master/buildSrc/src/main/resources/plugin-descriptor.properties
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
https://www.elastic.co/guide/en/elasticsearch/reference/5.2/query-dsl-function-score-query.html#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
转载于:https://www.cnblogs.com/ulysses-you/p/7066766.html
elasticsearch系列(七)java定义score相关推荐
- Elasticsearch系列(六)----JAVA客户端之Jest操作详解
Jest示例代码如下: package com.fendo.JestClient;import java.io.IOException; import java.text.SimpleDateForm ...
- mybatis 源码系列(七) Java基础之数据库事务隔离级别
更多mybatis 源码系列文章可关注我的博客,点击前往 正确设置数据库的事务访问级别,有助于我们的应用程序达到预期的效果 在mybatis中,提供了事务隔离级别的枚举类:org.apache.iba ...
- java面向对象编程集合边框_Java学习系列(七)Java面向对象之集合框架详解(上)
Java集合 有时也将集合称为容器类,它的作用就是用来"装对象"的.这里要注意的是集合也可以是对象.下面先看一张图: HashSet:底层用一个数组存元素 --而且这个数组的长度永 ...
- MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute
从操作配置文件properties中读取连接字符串,通过该字符串进行数据连接,需要写三个文件其中,两个是java类,一个是后缀名为.properties的文件,该文件放在src工作目录下. 需要准备的 ...
- ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...
温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...
- Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
- ElasticSearch系列 - 安装
ElasticSearch系列 - 安装 ElasticSearch 安装 elasticSearch下载 选择MACOS 下载,然后解压zip包 Elasticsearch目录结构为: 目录 配置文 ...
- Elasticsearch 系列文章(一):Elasticsearch 默认分词器和中分分词器之间的比较及使用方法
介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch 是用 Java 开 ...
- java转安卓快吗_安卓Kotlin开发系列之Java快速转Kotlin
原标题:安卓Kotlin开发系列之Java快速转Kotlin 自从Kotlin被宣布为Android开发语言的官方支持后,如今可谓是火的一塌糊涂,作为一名Android程序员,如何快速爬坑?今天为大家 ...
最新文章
- 二十三、oracle pl/sql分类三 包
- 应用系统中交互式报表功能解析
- java fastjson_java操作json数据之fastjson
- php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比
- python开源流程图软件_Dia
- php 卡迪尔的秘密
- scanner 获取控制台信息_Java使用Scanner类进行控制台输入实现方法
- android studio建数据库表,在android studio中创建表
- laravel windows 下queue能长时间执行吗_后台执行超长时间任务解决方案
- 给eclipse安装反编译
- 基于visual Studio2013解决面试题之0202上下排
- Java抓取淘宝/天猫商品详情 1
- (转载)高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD...
- 保角变换法matlab编程,保角变换法.ppt
- mysql 1236 bug_【转】MySQL主从失败 错误Got fatal error 1236解决方法
- linux中为什么要分区,为什么要分区
- 1234变4321java_java:把1234成4321整数倒逆代码
- Jmeter测试最大在线用户数
- 为什么访问亚马逊的网站卡顿?
- JavaWeb实训项目:基于SSM框架的CRM客户关系管理系统(文章最后有源码)