文档章节

Elasticsearch全文搜索的解决方案,走了不少弯路

 大东家
发布于 2015/08/27 13:20
字数 539
阅读 47
收藏 0

在对Elasticsearch进行全文搜索时,走了不少弯路。其实最终发现就一点点设置要的问题。

1.注意在mapping里面将_all enabled

示例:

{
    "template": "dbagent_*",
    "settings": {
        "index.number_of_shards": 5,
        "number_of_replicas": 1
    },
    "mappings": {
        "_default_": {
            "_all": {
                "enabled": "true"
            },
            "_source": {
                "enabled": true,
                "compress": true
            },
            "properties": {
                "_id": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "timestamp": {
                    "enabled": true,
                    "type": "date",
                    "format": "dateOptionalTime"
                },
                "host": {
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        },
	"access":{
		"properties":{
	          "status":{
			  "type":"integer"
		  },
                  "chost": {
                          "type": "ip",
                          "index": "not_analyzed"
                   },
 		  "interface":{
			   "dynamic":true,			
			   "type":"string",
			   "index":"not_analyzed"
		    }
		}
	},
        "error":{
 		"properties":{
			"pid":{
				"type":"integer"
			},
			"level":{
				"type":"integer"
			},
			"msg":{
				"type":"string",
				"index":"not_analyzed"
			},
			"ctime":{
				"dynamic":true,
				"type":"long"
			},
			"interface":{
				"dynamic":true,			
				"type":"string",
				"index":"not_analyzed"
			},
			"para":{
				"dynamic":true,				
				"type":"string",
				"index":"not_analyzed"
			},
               		"chost": {
				"dynamic":true, 	         	    	
                  	    	"type": "ip",
                  	    	"index": "not_analyzed"
                        },
			"message":{
				"type":"string",
				"index":"not_analyzed"
			}
		}
	}
    }
}


搜索时:

{"query":{"bool":{"must":[{"query_string":{"default_field":"_all","query":"455"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}

es 对 _all的解释

url:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html

原文:

The idea of the _all field is that it includes the text of one or more other fields within the document indexed. It can come very handy especially for search requests, where we want to execute a search query against the content of a document, without knowing which fields to search on. This comes at the expense of CPU cycles and index size.

The _all fields can be completely disabled. Explicit field mappings and object mappings can be excluded / included in the _all field. By default, it is enabled and all fields are included in it for ease of use.

When disabling the _all field, it is a good practice to set index.query.default_field to a different value (for example, if you have a main "message" field in your data, set it to message).

One of the nice features of the _all field is that it takes into account specific fields boost levels. Meaning that if a title field is boosted more than content, the title (part) in the _all field will mean more than the content (part) in the _all field.

Here is a sample mapping:

{
   
"person" : {
       
"_all" : {"enabled" : true},
       
"properties" : {
           
"name" : {
               
"type" : "object",
               
"dynamic" : false,
               
"properties" : {
                   
"first" : {"type" : "string", "store" : true , "include_in_all" : false},
                   
"last" : {"type" : "string", "index" : "not_analyzed"}
               
}
           
},
           
"address" : {
               
"type" : "object",
               
"include_in_all" : false,
               
"properties" : {
                   
"first" : {
                       
"properties" : {
                           
"location" : {"type" : "string", "store" : true, "index_name" : "firstLocation"}
                       
}
                   
},
                   
"last" : {
                       
"properties" : {
                           
"location" : {"type" : "string"}
                       
}
                   
}
               
}
           
},
           
"simple1" : {"type" : "long", "include_in_all" : true},
           
"simple2" : {"type" : "long", "include_in_all" : false}
       
}
   
}
}

The _all fields allows for storeterm_vector and analyzer (with specific index_analyzerand search_analyzer) to be set.

highlightingedit

For any field to allow highlighting it has to be either stored or part of the _source field. By default the _all field does not qualify for either, so highlighting for it does not yield any data.

Although it is possible to store the _all field, it is basically an aggregation of all fields, which means more data will be stored, and highlighting it might produce strange results.


版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaohelong2005/article/details/41516491

粉丝 22
博文 255
码字总数 111936
作品 0
长沙
项目经理
私信 提问
Elastic 南京 Meetup

1. 主办方 Elastic中文社区 趋势科技 2. 时间地点 活动时间:2018年6月30日 13:00 - 18:00 活动地点:雨花区软件大道48号苏豪国际广场B座 趋势科技中国研发中心(靠花神庙地铁站) 3. 报名地...

Medcl
2018/06/04
133
0
Java搜索引擎选择: Elasticsearch与Solr(转)

Elasticsearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组...

easonjim
2017/11/13
0
0
Elastic 南京Meetup 2018

时间地点 活动时间:2018年6月30日 13:00 - 18:00 活动地点:雨花区软件大道48号苏豪国际广场B座 趋势科技中国研发中心(靠花神庙地铁站) 报名地址: http://elasticsearch.mikecrm.... 名额...

Medcl
2018/06/14
61
0
搜索引擎选择: Elasticsearch与Solr

搜索引擎选型调研文档 Elasticsearch简介* Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索,结构化搜索以及分析,当然...

开源中国首席码农
2016/11/15
1K
4
Elastic 南京Meetup 2018

时间地点 活动时间:2018年6月30日 13:00 - 18:00 活动地点:雨花区软件大道48号苏豪国际广场B座 趋势科技中国研发中心(靠花神庙地铁站) 报名地址: http://elasticsearch.mikecrm.... 名额...

Medcl
2018/06/14
186
0

没有更多内容

加载失败,请刷新页面

加载更多

parseint和isNaN用法

本文转载于:专业的前端网站➭parseint和isNaN用法 <!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body><script> var a='12'; alert......

前端老手
53分钟前
7
0
Kylin 精确去重在用户行为分析中的妙用

作者:史少锋,Apache Kylin committer & PMC,2019/10/11 在上次文章《如何在 1 秒内做到大数据精准去重》中,我们介绍了 Apache Kylin 为什么要支持大数据集上的精确去重,以及基于 Bitmap...

ApacheKylin
今天
5
0
学习记录(二) es6基本语法(rest参数,模板化,axios模块,拦截器)

日常学习记录 模块化:把一个大文件分成多个小文件,按照一定规范进行拼接 es5写法: 导出:module.exports = 数据 导入:require("路径") /路径未添加后缀名时 //默认添加.js //把路径作为文件名...

Pole丶逐
今天
4
0
以程序员的角度怎么购买一台「性价比高的电视」

前俩天有小伙伴在我的文章下留言,说能否把 【国内电视机都介绍一下】,今天我已在TV端开发多年的程序员的角度。谈谈已程序员的角度如何购买一台性价比高的电视。 国内大的电视机品牌介绍 长...

我们都很努力着
今天
5
0
PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部