Elasticsearch - Не удается выполнить поиск с использованием поля предложения («не является полем предложения завершения») - PullRequest
0 голосов
/ 21 марта 2019

Я совершенно новичок вasticsearch и пытаюсь использовать средство подсказки завершения эластичного поиска в существующем поле с именем "identity.full_name", index = "search" и type = "person".Я следовал приведенному ниже указателю, чтобы изменить отображения поля.

1)

POST /search/_close

2)

POST search/person/_mapping
{
    "person": {
      "properties": {
        "identity.full_name": {
          "type": "text",
          "fields":{
            "suggest":{
              "type":"completion"
            }
          }
        }
        }
      }
    }

3)

POST /search/_open

Когда я проверяю сопоставления в этой точке, используя

GET search/_mapping/person/field/identity.full_name

, я получаю результат,

{
  "search": {
    "mappings": {
      "person": {
        "identity.full_name": {
          "full_name": "identity.full_name",
          "mapping": {
            "full_name": {
              "type": "text",
              "fields": {
                "completion": {
                  "type": "completion",
                  "analyzer": "simple",
                  "preserve_separators": true,
                  "preserve_position_increments": true,
                  "max_input_length": 50
                },
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                },
                "suggest": {
                  "type": "completion",
                  "analyzer": "simple",
                  "preserve_separators": true,
                  "preserve_position_increments": true,
                  "max_input_length": 50
                }
              }
            }
          }
        }
      }
    }
  }
}

, который предполагает, что он был обновлен, чтобы быть полем завершения.

Однако, когда я запрашиваю, чтобы проверить, работает ли это, используя,

GET search/person/_search
{
    "suggest": {
        "person-suggest" : {
            "prefix" : "EMANNUEL",
            "completion" : {
                "field" : "identity.full_name"
            }
        }
    }
}

Это выдает мне ошибку «Поле [identity.full_name] не является полем для предложения завершения»

Я не уверен, почему я получаю эту ошибку.Могу ли я попробовать еще что-нибудь?

пример данных:

  {
    "_index": "search",
    "_type": "person",
    "_id": "3106105149",
    "_score": 1,
    "_source": {
      "identity": {
        "id": "3106105149",
        "first_name": "FLORENT",
        "last_name": "TEBOUL",
        "full_name": "FLORENT TEBOUL"
        }
        }
        }

  {
    "_index": "search",
    "_type": "person",
    "_id": "125296353",
    "_score": 1,
    "_source": {
      "identity": {
        "id": "125296353",
        "first_name": "CHRISTINA",
        "last_name": "BHAN",
        "full_name": "CHRISTINA K BHAN"
        }
        }
        }

, поэтому, когда я делаю GET на основе префикса "CHRISTINA"

GET search / person / _search

{
    "suggest": {
        "person-suggest" : {
            "prefix" : "CHRISTINA",
            "completion" : {
                "field" : "identity.full_name.suggest"  
                }
            }
        }
    }

Я получаю все результаты, как запрос match_all.

1 Ответ

0 голосов
/ 21 марта 2019

Вы должны использовать его как

GET search/person/_search

    {
        "suggest": {
            "person-suggest" : {
                "prefix" : "EMANNUEL",
                "completion" : {
                    "field" : "identity.full_name.suggest"
                }
            }
        }
    }

Отображение для GET search / _mapping / person / field / identity.full_name

{
  "search" : {
    "mappings" : {
      "person" : {
        "identity.full_name" : {
          "full_name" : "identity.full_name",
          "mapping" : {
            "full_name" : {
              "type" : "text",
              "fields" : {
                "suggest" : {
                  "type" : "completion",
                  "analyzer" : "simple",
                  "preserve_separators" : true,
                  "preserve_position_increments" : true,
                  "max_input_length" : 50
                }
              }
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...