-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
get started #3
Comments
ES使用的是倒排索引(inverted index),与B Tree有什么区别呢 |
ES 暴露出来的API,get方法也可以提供JSON body 之前都是要用POST方法,这个是如何做到的 https://es.xiaoleilu.com/054_Query_DSL/55_Request_body_search.html ES使用GET请求可以带body。但是因为这种GET请求并没有被广泛支持,所以同样支持 |
明确短语搜索,使用match_phrase代替match GET /megacorp/employee/_search |
文档metadata _id是可以自增的,发送请求时使用POST方法,不指定id,而不是PUT方法 |
注意点:
PUT http://127.0.0.1:9200/website/blog/123?version=2
5.bulk操作,批量的增删改查 |
内部实现细节
主分片的数量在创建索引时定义时不能更改 ???shard 数量是如何计算的 不建议改成async,因为这样会导致其他接受更多的请求,而是es过载 https://es.xiaoleilu.com/040_Distributed_CRUD/15_Create_index_delete.html 【这条完全是坑爹啊,mongo,cassandra都不会这么设计】
bulk api不使用JSON数组,而是换行符,就是避免ES再去解析JSON,决定请求到哪个分片。 其他数据库为什么不提供Bulk操作,因为这样的操作虽然减少了client到ES的请求次数,但是单个请求block注了server很久。对ES单个instance的压力也增加了 |
search
from:就是skip /_search?size = 5&from=5 这边有一个坑就是,(一般db都有)
不建议直接暴露字符串搜索给用户,因为这样会很慢
|
6. 映射
全文文本是自然语义,需要明白缩写,单复数等
https://es.xiaoleilu.com/052_Mapping_Analysis/35_Inverted_index.html
JSON type Field type 数组,会根据第一个值类型来判断,所以要确保数组中的数据类型一致 |
7.请求体查询
叶子字句比如match这种,可以将查询字符串与一个字段进行比较 {
3.重要查询子句
GET /_search |
每个文档都有相关性评分,用一个相对的浮点数字段_score来表示 GET /_search?explain 可以查看评分标准 倒排索引在搜索方面比较卓越,但是却不是理想的排序结构 字段数据:为了提高排序效率,ES将所有字段的值加载到内存中,这叫做数据字段 |
分布式搜索:
滚屏允许在一个初始阶段搜索并且持续批量从ES中拉取结果直到没有结果,有点类似 滚屏搜索会及时制作快照, scan: 如果禁用排序,效率就会高。 GET /index/_search?search_type=scan&scroll=1m 滚屏一分钟 这个请求没有命中的结果,只有一个Base64的_scroll_id字符串 |
10.索引管理 可以在config/elasticsearch.yml设置自动索引为false 索引 配置 number_of_shards 默认值为5,创建后不能更改 **问题:**过滤字段是通过fields过滤和_source过滤有何区别 在应用中使用别名而不是索引。然后你就可以在任何时候重建索引。别名的开销很小,应当广泛使用。 |
数据不可更改的好处是
一个新段创建了首先写到内存中,再刷到磁盘里,这个过程是有个时间差的, optimize API可以强制合并段API,强制分片合并段已达到max_num_segments,将段的数量 |
https://www.ibm.com/developerworks/cn/java/j-use-elasticsearch-java-apps/
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
install elastic search
install git shell for curl
创建一个索引
curl -XPUT "127.0.0.1:9200/test/"
插入一个文档
查询 文档
·
curl -XGET "127.0.0.1:9200/test/user/_search?q=user:'name'"
{
“query”: {
"match" : {
}
}
}
The text was updated successfully, but these errors were encountered: