2015-11-04 2 views
1

Возможно ли иметь простой автозаполнения в Elasticsearch?Простой автозаполнение в Elasticsearch

Мне нужно ввести начало слова в поиск, и я хочу, чтобы elasticsearch нашел все слова, начиная с него. Я хочу, чтобы Elasticsearch проводил поиск во всех полях моего типа (Post, содержащем Title, Body, Tags).

В this example Мне нужно добавить специальные подсказки, например, TitleSuggest, BodySuggest и т. Д. И указать логику ввода и вывода.

Он также возвращает список Posts, а мне просто нужны слова.

+0

Вы изучали это? http://stackoverflow.com/questions/16411963/elasticsearch-an-edgengram-for-autocomplete-typeahead-is-my-search-analyzer-bei –

ответ

0

от того, что я понимаю, я буду делать так:

{ 
    "query" : { 
     "dis_max" : { 
      "tie_breaker" : 0, 
      "boost" : 1, 
      "queries" : [{ 
        "wildcard" : { 
         "title" : "searchme*" 
        } 
       }, { 
        "wildcard" 
        : { 
         "body" : "searchme*" 
        } 
       }, { 
        "wildcard" : { 
         "tags" : "searchme*" 
        } 
       } 
      ] 
     } 
    }, 
    "aggs" : { 
     "title" : { 
      "terms" : { 
       "field" : "title", 
       "size" : 10 
      } 
     }, 
     "body" : { 
      "terms" : { 
       "field" : "body", 
       "size" : 10 
      } 
     }, 
     "tags" : { 
      "terms" : { 
       "field" : "tags", 
       "size" : 10 
      } 
     } 
    } 
} 

Это поиск всех ДАННЫХ начинающиеся с «Условием поиска» в полях: заголовок, тело, теги и возвращает список из 10 терминов для каждого.

есть также автозаполнение в упругом, но я никогда не использовать его еще: https://www.elastic.co/guide/en/elasticsearch/guide/current/_index_time_search_as_you_type.html

0

Согласно одному сообщению от упругого отслеживания проблем, может быть, вы должны попробовать запрос, как это:

.Query(q => 
    q.Text(tq => tq            
    .OnField(t => t.MyField1.Suffix("autocomplete")) 
    .QueryString(searchString) 
)      
    && q.Text(tq => tq            
    .OnField(t => t.MyField2.Suffix("autocomplete")) 
    .QueryString(searchString) 
)  
) 

подробнее: https://github.com/elastic/elasticsearch-net/issues/456

Смежные вопросы