Java 弹性面极限
我在EC2实例上使用elasticsearch 0.20.2(16GB RAM,未启用交换)。我有很多索引文档,当我尝试做方面的结果时,我得到了堆空间错误,elasticsearch服务器无法使用。我增加了java的堆内存,但没有任何帮助。所以我的问题是,我能否限制将应用于哪个方面的文档数量 以下是我的设置和映射:Java 弹性面极限,java,heap,
elasticsearch,facet,Java,Heap,
elasticsearch,Facet,我在EC2实例上使用elasticsearch 0.20.2(16GB RAM,未启用交换)。我有很多索引文档,当我尝试做方面的结果时,我得到了堆空间错误,elasticsearch服务器无法使用。我增加了java的堆内存,但没有任何帮助。所以我的问题是,我能否限制将应用于哪个方面的文档数量 以下是我的设置和映射: my_settings = { 'settings': { 'analysis': { 'analyzer': {
my_settings = {
'settings': {
'analysis': {
'analyzer': {
'text_analyzer': {
'tokenizer': 'standard',
'filter': ['standard', 'lowercase']
},
'suggestions_analyzer': {
'tokenizer': 'standard',
'filter': ['suggestions_shingle']
}
},
'filter': {
'suggestions_shingle': {
'type': 'shingle',
'min_shingle_size': 2,
'max_shingle_size': 5
}
}
}
}
}
my_mapping = {
'test-type':{
'properties':{
'publish_datetime': {'type': 'date'},
'text': {
'type': 'multi_field',
'fields': {
'text': {'type': 'string', 'analyzer': 'text_analyzer', 'include_in_all': True},
'suggestions': {'type': 'string', 'analyzer': 'suggestions_analyzer', 'include_in_all': False}
}
}
}
}
}
我的搜索查询是:
query = {
'filtered': {
'filter' : {
'limit' : {'value' : 10}
},
'query':{
'prefix':{
'text.suggestions': 'wha'
}
},
},
'facets':{
'text_suggestions':{
'terms':{
'field':'text.suggestions',
'regex':'^%s.*' % 'wha',
'size': 5
}
}
},
'size': 0
}
是否有人成功地限制了要与我们共享的文档数量。不,不可能人为地限制要在其上运行聚合的文档数量——这种聚合显然是不正确的。facet受您发出的查询(以及您使用的任何facet\u过滤器)的限制 因此,请记住以下几种方法:
- 通常,facet将受到发送到Elasticsearch的
查询的限制
- 要在其上刻面的字段的值将加载到内存中
- 有一些技术可以防止临时刻面的内存不足错误,但它们对于常规用户公开的搜索/刻面没有用处
根据您发布的查询,不清楚您试图对
文本.建议字段上的facet执行什么操作?因此您告诉我facet输入了多少查询结果。所以,当我将大小限制放入查询部分时,若这是正确的,那个么我不会得到任何方面的结果,并且我知道有来自查询的结果,因为具有给定大小的相同查询和独立执行的查询会给出结果。”查询“:{'prefix':{'text.suggestions':'wha'},'size':100},