ElasticSearch(简称ES)是一个分布式、RESTful 风格的搜索和数据分析引擎,是用Java
开发并且是当前最流行的开源的企业级搜索引擎,能够达到近实时搜索,稳定,可靠,快 速,安装使用方便。
客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。
底层是用到Lucene库。Lucene使用到了全文检索和倒排索引
通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文
本中的位置、以及出现的次数
用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出
现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了
索引就类似于目录,平时我们使用的都是索引,都是通过主键定位到某条数据,
那么倒排索引呢,刚好相反,数据对应到主键。
{
"mappings":{
"properties":{
"title":{
"type":"text"
},
"city":{
"type":"keyword"
},
"price":{
"type":"double"
}
}
}
1. properties : 指定字段名称及其类型
2. title:字段名称
3. type:字段类型包含 text keyword double
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "hoteld"
}
{
"title": "好再来酒店",
"city": "青岛",
"price": 578.23
}
{
"_index": "hoteld",
"_type": "_doc",
"_id": "001",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"title": "好再来酒店",
"city": "青岛",
"price": 578.23
}
}
{
"_index": "hoteld",
"_type": "_doc",
"_id": "001",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"title": "好再来酒店",
"city": "青岛",
"price": 578.23
}
}
一版字段搜索需要用到query字段
请求形式
GET /${index_name}/_search
{
"query": { //查询内容
…
}
}
{
"query":{
"term":{
"price":{
"value":578.23 // 根据价格精确匹配
}
}
}
}
{
"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字段分析