Elasticsearch.net一些开发笔记
.net下开发es半年多了,留下些笔记
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/combining-filters.html
//bool 和 dis_max 过滤器能并联多个过滤器一起
// should 各个子查询的关系式or
// 如果should有兄弟过滤器那么 should和他的兄弟过滤器就是 and关系
//must 各个子查询的关系是and ,must 子元素里里面的 所有兄弟过滤器是一个and的关系,必须都要满足才能被检索出来
//must的多个子查询是 and的意思 如果 只有一个子查询 为什么还加个 must???
//当没有 must 语句的时候,至少有一个 should 语句必须匹配。 当有must的时候 should就成了加分项
//查询语句用constant_score的意思是 constant_score 里面的查询都使用结构化查询 也就是不使用评分
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/_best_fields.html#dis-max-query
//dis_max 和 bool的区别是 dis_max 返回最佳字段 比如 搜索 Brown fox 被搜索内容里里面出现 Brown fox的的时候得分要高于单独 出现Brown和fox的内容
//dis_max 的子查询 queries 是什么意思???
//exists 和 missing 相当于 is not null 和 is null
//match 查询主要的应用场景就是进行全文搜索
//fields 数组能指定多个查询字段
//filter 过滤器能在查询指定用户的内容起到作用
//同样的数据如果被索引在不通的索引当中那么即便查询的时候是有条件一样 结果不一定是相同的,因为内容下各自的索引分片当中的权重不一样
//所以很多人一直有疑惑 为什么我搜索的内容和我想要的结果不也一样 比如以下数据
// index1 {content:中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首}
// index2 { content:"你好中国"} { content:"我来自中国"}
//当你搜索 中国驻洛杉矶 的时候你预计是 index的数据排在前面 但是实际上是 index2的数据会排在前面 elasticsearch 中专业解释叫“被破坏的相关度”
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/multi-match-query.html
//multi_match相对match来说 multi_match查询为能在多个字段上反复执行相同查询提供了一种便捷方式 就是说使用multi_match包含的子查询能一条语句查询多个字段
//不需要些多个match 或者多个 term之类 直接使用fields 包含所有字段就ok
//match_phrase 相对match来说 match_phrase 查询时按照关键字的顺序来的 比如搜索 上海 李静 那结果中 上海 一定要在 李静的 前面 才能被搜索到
///cross_fields
///当查询 上海 李静 的时候 operator设置成 and type 设置成cross_fields 如果多个字段共同满足 有上海和李静 就符合查询(比如地址中有上海,名字中有李静)
// operator的值是 and和or minimum_should_match可以取代and和or 用百分百来匹配
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/_Improving_Performance.html
//rescore 结合 window_size 能对结果中的指定条数的数据进行 rescore_query(邻近查询) 查询 并且重新得分 提高结果精度
//minimum_should_match
/// 没有做分词的字段 也能使用 prefix 做局部查询 比如身份证是精确查询的 但是能使用 prefix 搜索430124开头的,但是不打分
/// wildcard 还能做正则匹配
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/scoring-theory.html
///创建索引的时候 如果为字段指定了 "index_options": "docs" 则表示 该字段搜索的时候忽略词频
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/query-time-boosting.html
//当在多个索引中搜索内容的时候可以通过 indices_boost 为各个索引整体提升权重
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/query-scoring.html 里面包含用 match 、multi_match 、term 、bool 和 dis_max 的导航
//https://www.elastic.co/guide/cn/elasticsearch/guide/current/_best_fields.html#dis-max-query
//dis_max 最佳查询
//如果一个稳定有 name adder 两个字段 当搜 key的时候 name adder互相竞争 是一样使用dis_max 查询 他将返回name后者adder两者匹配key的分数高的那个作为整体分数
//elasticsearch 查询批量删除
https://www.elastic.co/guide/en/elasticsearch/reference/5.2/docs-delete-by-query.html
https://blog.csdn.net/Sympeny/article/details/77876173
Elasticsearch.net一些开发笔记的更多相关文章
- [开发笔记]-未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出【转载自:酷小孩】
原文地址:http://www.cnblogs.com/babycool/p/3199158.html 今天打算用VisualStudio2012做一个js效果页面测试的时候,打开VS2012新建项目 ...
- EasyUI 开发笔记(二)
接上篇 :EasyUI 开发笔记(一) (http://www.cnblogs.com/yiayi/p/3485258.html) 这期就简单介绍下, easyui 的 list 展示, 在easy ...
- EasyUI 开发笔记(一)
由于某些原因,在公司做的后台需要改成类似于Ext.js 形式的后台,主要看好其中的 框架布局,以及tab开页面和弹出式内部窗体. 后来看看,改成EasyUI,较Ext.js 库小很多,也便于公司的初级 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用 ...
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...
- 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新
今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...
- Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)
一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...
- [openwrt 项目开发笔记]: 传送门
“Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台 ...
随机推荐
- Java并发主要操作
核心Java提供对多线程程序的完全控制. 也可以开发一个可以根据您的要求完全暂停,恢复或停止的多线程程序. 有各种静态方法可以用于线程对象来控制它们的行为. 下表列出了这些方法 - 编号 方法 说明描 ...
- 第一章 Linux是什么
Linux是核心与系统调用接口两层中间的操作系统 不同硬件的功能函数并不相同,IBM的Power CPU与Inter的x86架构不同,所以同一套操作系统是不能在不同的硬件平台上面运行的.也就是说,每种 ...
- [已解决]报错UnicodeDecodeError
输出报错: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 220: in 解决方案:将编码方式utf-8 修 ...
- Django 框架之前
返回主目录:Django框架 内容目录: 一.Django框架之前的内容 1.1 web应用程序的架构 1.2 HTTP协议 1.3 纯手写简单web框架 一.Django框架之前d的内容 1.1 w ...
- ros机器人导航设置原点,目标点
之前利用movebase导航定位都是通过rviz用鼠标指来指去,实验时非常方便,但实际应用总不能也人工指来指去吧,这怎么体现智能呢 启动导航后,用以前使用的rviz设设置目标点来获取map坐标系下的位 ...
- AES加密php,java,.net三种语言同步实现加密、解密
话不多数上代码: java::: /* * To change this license header, choose License Headers in Project Properties. * ...
- Java KMP算法代码
1. KMP 算法(字符串匹配算法)较 BF(朴素的字符串匹配)算法有哪些改进 1) 在主串和子串匹配的过程中,主串不再回退,只改变子串的比较位置. 2) 为子串生成对应的next数组,每次匹配失败, ...
- springboot启动时过滤不需要注入的类
在springbootApplication启动类上加入注解 @ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterTy ...
- 通过js渲染高层级DOM实现网页加水印
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- bzoj1005题解
[解题思路] 引理:Prufer编码 定义:不断删除树中度数为1的最小序号的点,并输出与其相连的节点的序号,直至树中只有两个节点,所得输出序列即为Prufer编码. 性质:任意一棵n节点的树都可以用长 ...