ES学习笔记3-检索基础篇

10 篇文章 0 订阅

Every field in a document is indexed and can be queried.

搜索可以分为以下类型

  •  structured query on concrete fields like gender or age, sorted by a field like join_date, similar to the type of query that you could construct in SQL(filter,过滤结果可以被缓存)
  • A full-text query, which finds all documents matching the search keywords, and returns them sorted by relevance(query,全文检索,返回与搜索条件相关的documen)
  • A combination of the two
关于搜索需要理解的3个概念。

1.mapping 类似于关系型数据中的表结构。虽然es是no-schema存储,但mapping的设置会影响到搜索结果。

2.Analysis 文档是样被分词和索引的。

3.Query DSL 用于查询的语言

GET /_search

空查询。ES中的检索可以使用url也可以使用Query DSL 推荐使用Query DSL.

multi-search


分页查询

from: size

{

"query":{

"match_all":{

}

},

"from":6,

"size":9

}

分布式分页:当数据非常多的时候查询最后几页不推荐使用from size。比如100页,每页10条。当查询第91页时,需要将第91页之前所有的数据全部取出来,在取第91页的数据。海量数据做排序严重影响分页性能。关于分布式存储的分页问题我们以后再会做深入研究。


mapping and analysis

GET /index/_mapping/type

exact values versus full text

在ES中数据分为两种类型:数值类型(?真实类型)与文本类型。

Exact values are easy to query. The decision is binary; a value either matches the query, or it doesn’t. 

真实类型容易查询。查询结果只有两种,符合或者不符合。

全文检索不容易查询。语言的语义复杂。程序很难辨别。查询结果与查询条件的相关性如何。

inverted index

与索引相对。正向索引是为了更快速的定位数据。反向索引是将文本分词,将词元与文档建立对应关系。

analysis and analyzers


Analysis is a process that consists of the following:

  • First, tokenizing a block of text into individual terms suitable for use in an inverted index,
  • Then normalizing these terms into a standard form to improve their “searchability,” or recall

How to test a analyzer.

GET /_analyze?analyzer=standard(analyzer name) -d "text to analyze"

mapping


为了能够将日期字段作为日期、数字领域数字,和字符串字段作为全文或精确值字符串,Elasticsearch需要知道每个字段包含什么类型的数据。这些信息都包含在映射中()






{

"mappings":{

 "index":{

"properties":{

"abc":{

"type":"string",

"index":"analyze",

"analyzer":"ik"

}

}

}

}

}

complex core field types

 null values, arrays, and objects
1.array
  all the values of an array must be of the same datatype.
. If you create a new field by indexing an array, Elasticsearch will use the datatype of the first value in the array to determine the type of the new field.

对象嵌套

Mapping-----------------------------------------------------------------------------------



Correlated inner objects, which are able to answer queries like these, are called nested objects, and we cover them later, in Nested Objects.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>