Upozornění a zároveň se snaží přidat mapování s dynamic_templates s analyzer a search_analyzer

0

Otázka

Jsem pomocí elasticsearch python klient pro připojení k elasticsearch.

Zatímco se snaží přidat mapování do indexu, jsem se následující varování:

es.indices.put_mapping(index=index, body=mappings)

/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py:209: ElasticsearchWarning: }}], attempted to validate it with the following match_mapping_type: [string], caused by [unknown parameter [search_analyzer] on mapper [__dynamic__attributes] of type [keyword]]
/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py:209: ElasticsearchWarning: }}], attempted to validate it with the following match_mapping_type: [string], caused by [unknown parameter [search_analyzer] on mapper [__dynamic__metadata] of type [keyword]]
  warnings.warn(message, category=ElasticsearchWarning)

A zatímco indexování záznamu, dostal varování

/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py:209: ElasticsearchWarning: Parameter [search_analyzer] is used in a dynamic template mapping and has no effect on type [keyword]. Usage will result in an error in future major versions and should be removed.
  warnings.warn(message, category=ElasticsearchWarning)
/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py:209: ElasticsearchWarning: Parameter [analyzer] is used in a dynamic template mapping and has no effect on type [keyword]. Usage will result in an error in future major versions and should be removed.
  warnings.warn(message, category=ElasticsearchWarning)

Já používám Pomocí elasticsearch "7.15.1"

pip balíčky:

elasticsearch==7.15.1

elasticsearch-dsl==7.4.0

Moje nastavení a mapování jsou:

settings = {"analysis": {"analyzer": {"my_analyzer": {
                                      "type": "custom",
                                      "tokenizer": "keyword",
                                      "filter": ["trim"]}
                                      }
                         }
            }
mappings = {"dynamic_templates": [
                            {"attributes": {
                                "match_mapping_type": "string",
                                "path_match": "attributes.*",
                                "mapping": {
                                    "type": "keyword",
                                    "analyzer": "my_analyzer",
                                    "search_analyzer": "my_analyzer"
                                    }
                                }
                             },
                            {"metadata": {
                                "match_mapping_type": "string",
                                "path_match": "metadata.*",
                                "mapping": {
                                    "type": "keyword",
                                    "analyzer": "my_analyzer",
                                    "search_analyzer": "my_analyzer"
                                    }
                                }
                             }
                        ]
            }

Potřebujete pomoc při úpravě mapování toto mapování bylo v pořádku na elastické 6.0.1. Po upgradu na 7.15.1 začal dostávat upozornění.

1

Nejlepší odpověď

1

Pokoušíte se nastavit analyzátor na klíčové oblasti. V Elasticsearch analyzátor dokumentace státy v horní části stránky:

Pouze textové pole podporují analyzátor mapování parametru.

Budete muset změnit typ oblasti na text, nebo zadejte analyzátor pro klíčové slovo pole. Můžete také použít normalizers použít token filtry, aby vaše klíčové slovo pole. Jak bylo uvedeno v odpovědi z této otázky na Elastické diskutovat stránce.

Trim token filtru, který chcete použít, není výslovně uvedena v seznamu kompatibilních filtrů, ale zkoušel jsem to s Kibana dev nástroje, a zdá se, že funguje:

PUT normalizer_trim
{
  "settings": {
    "analysis": {
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "filter": ["lowercase", "trim"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "foo": {
        "type": "keyword",
        "normalizer": "my_normalizer"
      }
    }
  }
}
2021-10-29 10:03:22

Máš to. Chci, aby moje pole keyword jen, protože chcete udělat přesnou shodu, a ne chci zlomit text pro vyhledávání. Jak potom mohu použít trim filter s type keyword. Chci odstranit vedoucí a koncové mezery při indexování a vyhledávání.
Gaurav Vichare

Token filtry mohou být aplikovány na klíčové slovo pole s normalizers, jsem si upravila moje odpověď na tuto informaci uvést.
samy

Díky, funguje To!
Gaurav Vichare

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................