1. 为什么要选择ElasticSearch 1)ElasticSearch 优点: 分布式.实时的.Push replication 完全支持Apache Lucene的接近实时的搜索 处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置 Gateway概念,使备份更加简单 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作 缺点: 只有一名开发则 还不够自动,不适合当前新的Index Warmup API(热索引) 2)Solr 优点…
背景 随着公司业务的高速发展以及数据爆炸式的增长,当前公司各产线都有关于搜索方面的需求,但是以前的搜索服务系统由于架构与业务上的设计,不能很好的满足各个业务线的期望,主要体现下面三个问题: 不能支持对语句级别的搜索,大量业务相关的属性根本无法实现 没有任何搜索相关的指标评价体系 扩展性与维护性特别差 基于现状,对行业内的搜索服务做出充分调研,确认使用ElasticSearch做底层索引存储,同时重新设计现有搜索服务,使其满足业务方对维护性.定制化搜索排序方面的需求. 整体技术架构 沪江搜索服务底…
一.ElasticSearch搜索介绍 1.ElasticSearch搜索方式主要分为以下两种: 1).URI Search:此种查询主要是使用Http的Get方法,在URL中使用查询参数进行查询: 如:http://localhost:9200/kibana_sample_data_ecommerce/_search?q=customer_first_name:Jim 这条URL中,q表示查询的内容,用来搜索名叫Jim的客户.用Postman进行查询,搜索结果如下图所示: 2).Request…
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/AAkVdzmkgdBisuQZldsnvg 英文原文:https://qbox.io/blog/elasticsearch-search-tuning-part-2 作者:Adam Vanderbush 译者:杨振涛 目录 预索引数据 映射 避免使用脚本 强制合并只读索引 Elasticsearch搜索调优权威指南,是QBOX在其博客上发布的系列文章之一,本文是该系列的第二篇,主要介绍了索引预处理…
Elasticsearch 简介 Elasticsearch(ES)是一个基于Lucene 构建的开源分布式搜索分析引擎,可以近实时的索引.检索数据.具备高可靠.易使用.社区活跃等特点,在全文检索.日志分析.监控分析等场景具有广泛应用. lucene Lucene介绍与入门使用 Lucene.Net API Elasticsearch 中文社区:https://elasticsearch.cn/article/ Elasticsearch 官方文档:https://www.elastic.co/…
本文主要介绍 ElasticSearch 搜索相关的知识,首先会介绍下 URI Search 和 Request Body Search,同时也会学习什么是搜索的相关性,如何衡量相关性. Search API 我们可以把 ES 的 Search API 分为两大类,第一类是 URI Search,用 HTTP GET 的方式在 URL 中使用查询参数已达到查询的目的:另一类为 Request Body Search,可以使用 ES 提供的基于 JSON 格式的格式更加完备的查询语言 Query…
一次 ElasticSearch 搜索优化 1. 环境 ES6.3.2,索引名称 user_v1,5个主分片,每个分片一个副本.分片基本都在11GB左右,GET _cat/shards/user 一共有3.4亿文档,主分片总共57GB. Segment信息:curl -X GET "221.228.105.140:9200/_cat/segments/user_v1?v" >> user_v1_segment user_v1索引一共有404个段: cat user_v1_s…
ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, "timed_out": false, "_shards": { "total": 16, "successful": 16, "failed": 0 }, "hits": { "tota…
php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8 <?php function getfirstchar($s0){   //获取单个汉字拼音首字母.注意:此处不要纠结.汉字拼音是没有以U和V开头的     $fchar = ord($s0{0});     if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0…
一.背景 这周在使用Elasticsearch搜索的时候遇到一个,对于同一个搜索请求,会出现top50返回结果和排序不一致的问题.那么为什么会出现这样的问题? 后来通过百度和google,发现这是因为Elastcisearch的分布式搜索特性导致.Elasticsearch在搜索时,会循环的选择主分片和其副本中的一个来计算和返回搜索结果,而由于主分片和副本中相关统计信息的不同,从而导致了同一个搜索串的评分的不一致,进而导致排序不一样.而造成这种主分片和副本统计信息不一致的具体原因,是因为文档删除…