2016-02-22 2 views
3

Я пытаюсь настроить среду Elasticsearch с возможностью подключения .NET. Я мог делать базовые запросы с настраиваемыми нечеткими расстояниями, но то, что я не могу сделать, - это ускорение поля во время запроса. Я уже пробовал несколько уроков/вопросов, например Elasticsearch Nest Boost query или Elastic Search using NEST Field Boosting, но NEST не распознает «.OnFieldsWithBoost» или «.OnFields».Elasticsearch Nest field boost + fuzzy

я был в состоянии сделать некоторые поля повышения с помощью HTTP API поиска Elastic:

POST /products/typeproduct/_search 
{ 
    "query" : { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "Title": { 
       "query": "sometest", 
       "boost": 10.0 
      } 
      } 
     }, 
     { 
      "match": { 
      "Name": "sometest" 
      } 
     } 
     ] 
    } 
    } 
} 

но опять же я не был в состоянии соответствовать этому запросу с помощью синтаксиса NEST, поскольку это не позволяет несколько «матча» в "должен".

Моя конечная цель - увеличить некоторые поля (Название) над другими (Имя) и добавить некоторую нечеткость в игру. Любая помощь будет принята с благодарностью.

Мой Упругие версия Поиск: 2.2.0 Моя версия НЕСТ: 2.0.2

ответ

3

Это беглый запрос:

var response = client.Search<Document>(search => search 
    .Query(q => q.Bool(b => b 
     .Should(
      s => s.Match(m => m.Query("sometest").Field(f => f.Title).Boost(1.1)), 
      s => s.Match(m => m.Query("sometest").Field(f => f.Name).Fuzziness(Fuzziness.EditDistance(1))) 
     )))); 

, который генерирует следующий запрос elasticsearch:

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "title": { 
       "boost": 1.1, 
       "query": "sometest" 
      } 
      } 
     }, 
     { 
      "match": { 
      "name": { 
       "query": "sometest", 
       "fuzziness": 1 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

Надеюсь, это то, что вы искали :)