elasticsearch的cross_fields查询
1.most_fields
这种方式搜索也存在某些问题
- 它不能使用
operator
或minimum_should_match
参数来降低次相关结果造成的长尾效应。
2.词 peter
和 smith
都必须出现,但是可以出现在任意字段中。
3.cross_fields
类型首先分析查询字符串并生成一个词列表,然后它从所有字段中依次搜索每个词。这种不同的搜索方式很自然的解决了 字段中心式 查询三个问题中的二个
4.经典案例
GET /_validate/query?explain
{
"query": {
"multi_match": {
"query": "peter smith",
"type": "cross_fields",
"operator": "and",
"fields": [ "first_name", "last_name" ]
}
}
}
参考:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_cross_fields_queries.html
---------------------------------------------------------------------------------------------------------------------------
1.正则结合cross_fields
PUT /addressbook/_doc/
{
"name":"test url",
"mobile":"123/456/url"
}
GET /addressbook/_search
{
"query": {
"multi_match": {
"query": ".*456.*", #.*去掉也一样的效果
"fields": ["name","mobile"]
}
}
}
---------------------------------------------------------------------------------------------------------
3.中文搜索,cross_field
3.1.定义映射
PUT yanbao072702
"mappings": {
"_doc"{
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"author": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"institution": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"industry": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"grade": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"doc_type": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"time": {
"type": "date" ,
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"doc_uri": {
"type": "text",
"index":false
},
"doc_size": {
"type": "integer",
"index":false
},
"market": {
"type": "byte"
}
}
}
}
}'
3.2 插入数据
PUT /yanbao0727/_bulk
{"index":{"_id":""}}
{"title":"香港-报告","author":"中信证券","institution":"中信中国","industry":"testindustry","grade":"testgrade","doc_type":"testdoc_type","time":"2019-07-27","doc_uri":"www.baidu.com","doc_size":"10M","market":"cn"}
3.3 测试分词器
POST _analyze
{
"analyzer": "ik_smart",
"text":"test报告"
}
3.4 搜索“君安 报告”
POST /yanbao0727/_search
{
"query": {
"multi_match": {
"query": "报告 君安",
"type": "cross_fields",
"fields": ["author","title"]
}
}
}
3.5 搜索结果
{
"_index" : "yanbao0727",
"_type" : "_doc",
"_id" : "",
"_score" : 2.6205368,
"_source" : {
"title" : "test报告",
"author" : "国泰君安",
"institution" : "君安证券",
"industry" : "testindustry",
"grade" : "testgrade",
"doc_type" : "testdoc_type",
"time" : "2019-07-27",
"doc_uri" : "www.baidu.com",
"doc_size" : "10M",
"market" : "cn"
}
}
参考:https://www.cnblogs.com/dxf813/p/8447196.html
elasticsearch的cross_fields查询的更多相关文章
- elasticsearch GIS空间查询问题解决
在GIS行业的应用越来越广泛,GIS最常用根据区域进行空间数据查询 我定义了两个方法,一起来看一下: /** * geodistance filter * 一个过滤器来过滤基于一个特定的距离从 ...
- Elasticsearch文档查询
简单数据集 到目前为止,已经了解了基本知识,现在我们尝试用更逼真的数据集,这儿已经准备好了一份虚构的JSON,关于客户银行账户信息的.每个文档的结构如下: { , , "firstname& ...
- Elasticsearch(GEO)空间检索查询
Elasticsearch(GEO)空间检索查询python版本 1.Elasticsearch ES的强大就不用多说了,当你安装上插件,搭建好集群,你就拥有了一个搜索系统. 当然,ES的集群优化和查 ...
- 利用kibana插件对Elasticsearch进行bool查询
#bool查询#老版本的filtered查询已经被bool代替#用 bool包括 must should must_not filter来完成 ,格式如下:#bool:{# "filter ...
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- java使用elasticsearch进行模糊查询-已在项目中实际应用
java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...
- Elasticsearch 常用基本查询
安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文 ...
- kibana和ElasticSearch的信息查询检索
使用kibana来进行ElasticSearch的信息查询检索 大家经常会听到使用ELK搭建日志管理平台.完成日志聚合检索的功能,那么这个平台到底是个什么概念,怎么搭建,怎么使用呢? ELK包括Ela ...
随机推荐
- 让create-react-app支持sass,less
用create-react-app 创建的项目不支持sass和less,需要手动配置 npm install node-sass sass-loader --save 然后在config/webpac ...
- Springboot项目报错【java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader】
1.发生问题: 升级了JDK9,发现原先的springboot项目起不来了,以为是maven中jdk配置有问题. 于是在pom中添加了 <plugin> <groupId>or ...
- 【Winfrom-Panel】Panel隐藏与显示,自动隐藏菜单, Auto-Hide Menu
设计界面:2个button,一个panel 当鼠标移动到btnHome时,显示menuPanel 当鼠标离开btnHome时,隐藏menuPanel 当btnPin箭头向左时,menuPanel为自动 ...
- [人物存档]【AI少女】【捏脸数据】金发西洋风格
点击下载(城通网盘):AISChaF_20191103124436239.png
- 31. ClustrixDB 分布式架构/查询优化器
ClustrixDB查询优化器有何不同 ClustrixDB查询优化器的核心是能够执行一个具有最大并行性的查询和多个具有最大并发性的并发查询.这是通过分布式查询规划器和编译器以及分布式无共享执行引擎实 ...
- 【Python之路】特别篇--五句话搞定JavaScript作用域
JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C# ...
- 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
简书作者:seay 文章出处: 关系数据库SQL之高级数据查询:去重复.组合查询.连接查询.虚拟表 回顾:[知识库]-数据库_MySQL之基本数据查询:子查询.分组查询.模糊查询 Learn [已经过 ...
- C++模板的偏特化与全特化
模板的声明 类模板和函数模板的声明方式是一样的,在类定义/模板定义之前声明模板参数列表.例如: // 类模板 template <typename T1, typename T2> cla ...
- webservice代码编写主要包括服务器端发布和客户端调用。
一.java工程发布,java工程调用 (一).服务器端的编写 1.在eclipse里新建java project工程,创建功能类,通过关键字@webservice(name="newI ...
- 通过JS给HTML元素增加、删除和获取属性内容
1.通过ID或者其他元素找到要处理的HTML对象:(举例通过ID) var obj=document.getElementById('id');12.操作此对象 添加属性:obj.setAttribu ...