ElasticSearch使用的其他总结

谁都会走 提交于 2020-07-25 13:50:44

使用search template

对于ES可以理解为一个NoSQL的容器,应用来访问和调用的过程。对于搜索引擎来讲,一般的项目所有业务搜索场景都是相对明确的。是否可以做到ES的复杂json业务处理,由ES来做,前端不关心ES的json的语法格式来做到搜索引擎和前端解耦?使用模版结构。

模版结构可以应用到所有的索引上,所以创建的时候不加索引,template是模版名,可以自定义

POST /_scripts/templatename
{
    "script": {
        "lang": "mustache",
        "source": {
            "query": {
                "match": {
                    "username": {
                        "query": "{{nick_value}}",
                        "analyzer": "{{nick_analyzer}}"
                    }
                }
            }
        }
    }
}

获得模版:GET /_scripts/templatename

删除模版: DELETE /_scripts/templatename

调用模版进行查询: GET /index_customer/_search/template

{
    "id": "templatename",
    "params": {
        "nick_value": "张三",
        "nick_analyzer": "ik_max_word"
    }
}

给field增加分词器

POST /index_customer/_mapping
{
    "properties": {
        "username": {
            "type": "text",
            "analyzer": "ik_max_word",
            "fields": {
                "pinyin": {
                    "type": "text",
                    "analyzer": "pinyin"
                }
            }
        }
    }
}

添加分词器后就进行搜索,在添加分词器之前的数据是搜不到的, ES索引中的数据,是在导入是就进行了分词,而不是在查询的时候才进行分词。

解决方法:现有index进行自更新

POST /index_customer/_update_by_query

这样就可以正常查询了

reindex&index alias功能分析使用

reindex:

  • 我们一个index在创建好mapping后不能对type进行修改,原来是keyword我想改成text?

  • 比如我们的存储不够了,加入了新的机器进入集群,主分片我想增加怎么办?

这个时候就需要使用reindex,相当于索引复制的概念。

如果你的新索引没有手工创建mapping,那么ES会根据数据来自动生成mapping:

POST /_reindex
{
    "source": {
        "index": "index_customer"
    },
    "dest": {
        "index": "index_customer1"
    }
}

如果新的index里本来就有数据,希望设定为没有才写,有的话版本冲突

POST /_reindex
{
    "source": {
        "index": "index_customer"
    },
    "dest": {
        "index": "index_customer1",
          "op_type": "create"
    }
}

如果跨集群进行索引复制,将索引从集群A复制到集群B,这个要在B集群上执行,要给soure设置白名单,在B集群的elasticsearch.yml文件里,reindex.remote.whitelist: "192.168.0.100:9200,192.168.0.101:9200"

POST /_reindex
{
    "source": {
        "remote": {
            "host": "http://192.168.0.100:9200"
        },
        "index": "index_customer",
        "query": {
            "match": {
                "username": "张三"
            }
        },
        "size": 100
    },
    "dest": {
        "index": "index_customer1",
        "op_type": "create"
    }
}

reindex的支持异步操作,会返回一个taskId

POST /_reindex?wait_for_completion=false

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!