文档章节

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

 大东家
发布于 2015/01/13 10:28
字数 516
阅读 153
收藏 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
129
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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
220
4
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
5
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
8
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部