我有一个问题,使用elasticsearch浪费了很多时间在这个问题上,你可以帮助我。
我有很多产品的索引,我根据这些搜索的某些类别设置了提升:
{
"from": 1,
"size": 10
"query": {
"bool": {
'must': {
'match': {
'NAME': {
"query": "tv",
"operator": "and"
}
},
},
"should": {
"query_string": {
"query": 'category: 23',
"boost": 2
}
}
}
}
这项工作很好,结果的评分已经针对这些类别进行了更改。
现在我们想介绍搜索的同义词,我们使用这种方法将synoynyms设置为elasticsearch中的分析器:
"analysis": {
"analyzer": {
"synonym": {
"tokenizer": "whitespace",
"filter": ["lowercase", "asciifolding", "synonym_filter"]
}
},
"filter": {
"synonym_filter": {
"type": "synonym",
"language": "spanish",
"synonyms": [
"tv, television, tdt"
]
}
}
}
我们更改查询以使用新的分析器,这很好用:
{
"from": 1,
"size": 10
'query': {
'bool': {
'must': {
'match': {
'NAME': {
"query": "television",
"operator": "and",
"analyzer": "synonym"
}
}
}
}
}
}
但是当我们尝试对此查询应用boost时,结果不会发生变化
{
"from": 1,
"size": 10
'query': {
'bool': {
'must': {
'match': {
'NAME': {
"query": "television",
"operator": "and",
"analyzer" => "synonym"
}
},
},
"should": {
"query_string": {
"query": 'category: 23',
"boost" => 2
}
}
}
}
}
有人可以帮助我吗?
问候。
答案 0 :(得分:0)
已在5.0的新版本中弃用了索引Boost
,其中field mapping boost
可用。我想你已经意识到了这一点。
指数时间提升已弃用。
如果在索引时它是一个字段级别的提升,那么您的查询不应该像:
"should": {
"query_string": {
"query": 'category: 23',
"boost": 2
}
}
如果情况并非如此,则应该使用analyzer
。您不应该在analysis
标记中使用settings
:
PUT /index
{
"settings": {
"analysis": {
"analyzer": {
}
}
}
}