2016-07-26 2 views
0

Текущий стек включает node.js v0.12.7 работает с elasticsearch-Js> = 1.1.0 с Elasticsearch 1.7 API.Elasticseach завершение Suggester возвратные предложения от конкретного типа индекса

Мои текущие настройки elasticsearch отображается иметь 1 индекс с 2-х типов:

elasticsearch.client.indices.create({ 
     index: 'randomindex', 
     body: { 
     "settings": { 
      "analysis": { 
      "filter": { 
       "autocomplete_filter": { 
       "type": "edge_ngram", 
       "min_gram": 1, 
       "max_gram": 20 
       } 
      }, 
      "analyzer": { 
       "autocomplete": { 
       "type": "custom", 
       "tokenizer": "standard", 
       "filter": [ 
        "lowercase", 
        "autocomplete_filter" 
       ] 
       }, 
       "my_english": { 
       "type":  "english", 
       "stopwords": "_english_" 
       } 
      } 
      } 
     }, 
     'mappings': { 
      'countries': { 
      'properties': { 
       'country': { 
       'type': 'string', 
       'fields': { 
        "autocomplete": { "type": "string", "index_analyzer": "autocomplete", "search_analyzer": "my_english" } 
       } 
       }, 
       "suggest_countries": { 
       "type": "completion", 
       "index_analyzer": "simple", 
       "search_analyzer": "simple", 
       "payloads": true 
       } 
      } 
      }, 
      'some_other_type': { 
      'properties': { 
       "field_1": { 
       "type": "date" 
       }, 
       "field_2": { 
       "type": "string" 
       }, 
       "suggest_some_other_field": { 
       "type": "completion", 
       "index_analyzer": "simple", 
       "search_analyzer": "simple", 
       "payloads": false 
       } 
      } 
      } 
     } 
     } 
    }); 

Я тогда заселена как внушение поля с соответствующими «вход», «выход» и поля «полезной нагрузки».

Я хотел бы указать конкретный тип индекса для возврата предложения от но бросают ошибки, когда я делаю это:

elasticsearch.clients.suggest({ 
    index: "randomindex", 
    type: "countries", 
    body: { 
     "suggest": { 
     text: query, 
     completion: { 
      "field": "suggest_countries" 
     } 
     } 
    } 
    }); 

Есть ли способ, которым я мог бы указать/отношусь к конкретному типу в. предложить метод?

+0

Просьба поделиться с вами информацией об ошибке ES. – Val

+0

Ошибка при запуске на узле. он просто возвращает пустой массив параметров в объект ответа. Однако, когда я пытаюсь добраться до конечной точки '/ randomindex/countries/_suggest' через клиент, например расширение Google Sense для Google, я передаю что-то вроде' {"suggest_countries": {"text": "a", "completion": { «field»: «suggest_countries»}}} ', и он выдает ошибку, например,« MapperParsingException [не удалось выполнить синтаксический анализ]]; inested: ElasticsearchIllegalArgumentException [Неизвестное имя поля [текст], должно быть одним из [вывода, контекста, ввода, веса, полезной нагрузки]]; '. –

+0

Я могу убедиться, что я правильно заполнил поле 'suggest_countries' в' autocomplete_countries', потому что я проверил значение Sense против конечной точки '/ randomindex/countries/_search', и все, кажется, там. –

ответ

0

Вы должны сделать свой вызов без type параметра

elasticsearch.clients.suggest({ 
    index: "randomindex", 
    body: { 
     "suggest": { 
     text: query, 
     completion: { 
      "field": "suggest_countries" 
     } 
     } 
    } 
    }); 

Смотрите официальную документацию для client.suggest() call, нет type параметра доступен.

+0

любая удача с этим? – Val

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