elasticsearch-权威指南笔记-基础部分

时间:2018-04-15 10:55:55   收藏:0   阅读:189

参考这里的文档es权威指南
话说这个坑爹的文档是2.x版本的es,英文版本也是,所以就没啥好抱怨的了。

官方教程中有很多坑

例如,需要启动text上的索引。

还有就是get这个是不能带json的,所以很多get的操作其实都是直接用post。

关于集群

关于文档

查询

  {
      "bool": {
          "must":     { "match": { "tweet": "elasticsearch" }},
          "must_not": { "match": { "name":  "mary" }},
          "should":   { "match": { "tweet": "full text" }},
          "filter":   { "range": { "age" : { "gt" : 30 }} }
      }
  }

索引管理

  PUT /my_index
  {
      "settings": {
          "analysis": {
              "char_filter": {
                  "&_to_and": {
                      "type":       "mapping",
                      "mappings": [ "&=> and "]
              }},
              "filter": {
                  "my_stopwords": {
                      "type":       "stop",
                      "stopwords": [ "the", "a" ]
              }},
              "analyzer": {
                  "my_analyzer": {
                      "type":         "custom",
                      "char_filter":  [ "html_strip", "&_to_and" ],
                      "tokenizer":    "standard",
                      "filter":       [ "lowercase", "my_stopwords" ]
              }}
  }}}
  PUT /my_index
  {
      "mappings": {
          "my_type": {
              "dynamic_templates": [
                  { "es": {
                        "match":              "*_es", 
                        "match_mapping_type": "string",
                        "mapping": {
                            "type":           "string",
                            "analyzer":       "spanish"
                        }
                  }},
                  { "en": {
                        "match":              "*", 
                        "match_mapping_type": "string",
                        "mapping": {
                            "type":           "string",
                            "analyzer":       "english"
                        }
                  }}
              ]
  }}}

吐槽,难怪es引入版本和各种文档更新的手段,es内部的数据是写完了就不改的,新追加的数据不会导致以前的索引重建,而是直接新建一块索引,并将原来的索引加入新建的索引块,所以es中的文档可以认为都是只读的。因而查询效率比较高,但是也引入了很多的问题。

最终,所有新建的索引都会被合并优化。这是后台低优先级执行的,所以不要指望每天有大量数据写入的情况下还能很好的合并优化,除非机器资源很足。

es的文档索引并不是实时的,有个1S的间隔,但是这个一般足够长了,如果不够的话,可以手动刷新,用

POST /_refresh 
POST /blogs/_refresh 

另外刷新的频率是可以i设置的

PUT /my_logs
{
  "settings": {
    "refresh_interval": "30s" 
  }
}

映射

关于URL

url中的一些特殊字段都是有特殊含义的,例如_search, _mapping之类的。

原文:https://www.cnblogs.com/dwsun/p/8836230.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!