2017-09-15 90 views
0

请帮我选择ElasticSearch建议类型。ElasticSearch从短语中间提示

我有大量公司的ElasticSearch索引,它们的名字如“JSC Some company”,“JSC Another company”等。

完成建议者不起作用,因为用户喜欢类型:“有些合作......”,但如果用户有开始建议者只能“JSC一些合作......”

有什么办法来快速创建用户输入时搜索?

我想补充我的映射示例和建议,以便查询示例问题得到更加清晰:

curl -XPUT 'localhost:9200/tass_suggest_test/_mapping/company?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "company": { 
      "properties": { 
       "id": { 
        "type": "integer" 
       }, 
       "inn": { 
        "type": "keyword" 
       }, 
       "innSuggest" : { 
        "type" : "completion", 
        "analyzer": "whitespace" 
       } 
      } 
     } 
} 
' 

curl -XGET 'localhost:9200/tass_suggest_test/_suggest?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "company-suggest" : { 
     "prefix" : "78200", 
     "completion" : { 
      "field" : "innSuggest" 
     } 
    } 
} 
' 

回答

0

你可以尝试以下方式使用NGRAM过滤器。

"filter": { 
    "suggest_filter": { 
     "type" : "ngram", 
     "min_gram": 2, 
     "max_gram": 7 
    } 
}, 
"analyzer": { 
    "suggest_analyzer": { 
     "type": "custom", 
     "tokenizer": "whitespace", 
     "filter": ["lowercase", "suggest_filter"] 
    } 
} 
+0

谢谢,但我认为这不是我要找的。我在我的索引字段输入“完成”。我使用完成类型,因为我想使用“_suggest”而不是“_query”来获得来自搜索引擎的实时回答。你能否给我举个例子,我怎样在“完成”字段中使用这个过滤器和分析器。 –