Elasticsearch搜索入门(读书笔记)

ElasticSearch(简称ES)是一个分布式、RESTful 风格的搜索和数据分析引擎,是用Java
开发并且是当前最流行的开源的企业级搜索引擎,能够达到近实时搜索,稳定,可靠,快 速,安装使用方便。
客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。
底层是用到Lucene库。Lucene使用到了全文检索和倒排索引

1.什么是全文检索

通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文
本中的位置、以及出现的次数
用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出
现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了

2.什么事倒排索引

索引就类似于目录,平时我们使用的都是索引,都是通过主键定位到某条数据,
那么倒排索引呢,刚好相反,数据对应到主键。

Elasticsearch搜索入门(读书笔记)_第1张图片

1. Elasticsearch搜索入门

1.1 创建索引

  1. 请求方式:PUT
  2. 请求地址:https:127.0.0.1/hoteld hotele 为索引名称
  3. 请求json
{
  "mappings":{
    "properties":{
      "title":{
        "type":"text"
      },
      "city":{
        "type":"keyword"
      },
      "price":{
        "type":"double"
      }
    }
  }
  1. properties : 指定字段名称及其类型
  2. title:字段名称
  3. type:字段类型包含 text keyword double
  1. 创建成功
{
	"acknowledged": true,
	"shards_acknowledged": true,
	"index": "hoteld"
}

1.2 写入文档

  1. 请求方式:POST
  2. 请求地址:https:127.0.0.1/hoteld/_doc/001 **hotele 为索引名称 _doc 标识写入文档 001 标识写入的组件id为1 **
  3. 请求JSON
{
	"title": "好再来酒店",
	"city": "青岛",
	"price": 578.23
}
  1. 写入成功
{
	"_index": "hoteld",
	"_type": "_doc",
	"_id": "001",
	"_version": 1,
	"_seq_no": 0,
	"_primary_term": 1,
	"found": true,
	"_source": {
		"title": "好再来酒店",
		"city": "青岛",
		"price": 578.23
	}
}

1.3 根据id搜索数据

  1. 请求方式:GET
  2. 请求地址:https:127.0.0.1/hoteld/_doc/001
  3. 结果
{
	"_index": "hoteld",
	"_type": "_doc",
	"_id": "001",
	"_version": 1,
	"_seq_no": 0,
	"_primary_term": 1,
	"found": true,
	"_source": {
		"title": "好再来酒店",
		"city": "青岛",
		"price": 578.23
	}
}

1.4 根据一般字段搜索

一版字段搜索需要用到query字段

请求形式

GET /${index_name}/_search 
{ 
 "query": {                          //查询内容 } 
}

1.4.1 根据酒店金额查询符合的酒店信息

  1. 请求方式:GTE
  2. 请求地址:https:127.0.0.1/hoteld/search
  3. 请求JSON
{
  "query":{
    "term":{
      "price":{
        "value":578.23 // 根据价格精确匹配
      }
    }
  }
}
  1. 响应结果
{
	"took": 3,
	"timed_out": false,
	"_shards": {         // 命中的分片信息
		"total": 1,
		"successful": 1,
		"skipped": 0,
		"failed": 0
	},
	"hits": {
		"total": {
			"value": 1,
			"relation": "eq"
		},
		"max_score": 1,        // 文档命中中的最高分
		"hits": [              // 命中文档集合信息
			{
				"_index": "hoteld",   // 文档所在索引
				"_type": "_doc",      // 索引类型
				"_id": "001",
				"_score": 1,
				"_source": {
					"title": "好再来酒店",
					"city": "青岛",
					"price": 578.23
				}
			}
		]
	}
}

JSON字段分析

  1. _shards 命中的分片信息
  2. hits:命中的文档总数
  3. max_score:命中文档中的最高分
  4. hits:命中文档信息
    1. _index:文档所在索引
    2. _type:索引类型
    3. _id:文档id
    4. _score:文档分值
    5. _source:文档内容

你可能感兴趣的:(es,elasticsearch,搜索引擎,lucene)