Elasticsearch5常见问题汇总

Elasticsearch5常见问题汇总

1. 跨域支持
编辑elasticsearch.yml文件,增加以下配置:
http.cors.enabled: true
http.cors.allow-origin: "*"

2. 最大布尔查询数量
编辑elasticsearch.yml文件,增加以下配置:
indices.query.bool.max_clause_count: 10240

3. 为索引和检索指定不同的分词器
{
    "mappings": {
        "default": {
            "properties": {
                "keyword": {
                    "type": "text",
                    "analyzer": "索引分词器",
                    "search_analyzer": "检索分词器",
                    "search_quote_analyzer": "引号检索分词器"
                }
            }
        }
    }
}

4. 在ActionPlugin插件中处理JSON
4.1 获取POST请求内容
if(RestActions.hasBodyContent(request)) {
BytesReference content = RestActions.getRestContent(request);
Tuple<XContentType, Map<String, Object>> tuple = XContentHelper.convertToMap(content, true);
if(XContentType.JSON == tuple.v1()) instance.params = tuple.v2();
}
4.2 将JSON字符串转换为Map对象
XContentFactory.xContent(XContentType.JSON).createParser(json).mapOrdered();
4.3 将Map对象转换为JSON字符串
XContentFactory.jsonBuilder().map((Map<String, ?>) object).string();
4.4 关于URL中请求字符串的处理特性
QueryStringPHPJavaElastcisearch
a=1字符串数组字符串
a=1&a=2最后一个字符串数组最后一个字符串
a[]=1&a[]=2数组Key=a数组Key=a[]最后一个字符串Key=a[]
a[0]=1&a[1]=2数组多个数组多个字符串
a.k1=1&a.k2=2多个字符串多个数组多个字符串
Elasticsearch内部通信和对外服务均采用Netty框架,支持JSON和YAML等多种数据格式,基于URI注册RestHandler,不建议采用请求字符串的方式传递参数。

5. 复杂查询
多看官方文档,绝大部分的需求都能在文档中找到答案,通过Aggregations组合可实现不同的功能。

6.自定义评分与随机排序
权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/random-scoring.html
参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.1/query-dsl-function-score-query.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值