Python中的ElasticSearch:尝试创建索引时,“类型为[文本]的Map器[机构]上的参数[分析器]未知”

htzpubme  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(147)

我尝试用Python在Elasticsearch中创建我的第一个索引。我一直收到以下类型的错误:“未知参数[analyzer] on mapper [institution] of type [text]”或“索引尚未在mapper中配置”。我尝试了几种方法用“put_settings”和“put_mappings”方法创建索引,但都不起作用。我使用Python API版本7和Docker上的Elasticsearch 7.12.0。以下是我的代码。

def create_expert_index(index_name="expert_query"):
    es = connect()

    if es.indices.exists(index=index_name):
        es.indices.delete(index=index_name, ignore=[400, 404])

    mappings = {
        "settings": {
            "analysis": {
                "analyser": {
                    "standard_asciifolding": {
                        "type": "custom",
                        "tokenizer": "standard",
                        "filter": ["asciifolding", "lowercase"]
                    }
                }
            }
        },
        "mappings": {
            "properties":
                {
                    "first_name":
                        {
                            "type": "text",
                            "analyser": "standard_asciifolding"

                        },
                    "last_name":
                        {
                            "type": "text",
                            "analyser": "standard_asciifolding"
                        },
                    "email":
                        {
                            "type": "text",
                            "analyser": "standard_asciifolding"
                        },
                    "specializations":
                        {
                            "type": "text",
                            "analyser": "standard_asciifolding"
                        },
                    "institution":
                        {
                            "type": "text",
                            "analyser": "standard_asciifolding"
                        }
                }

        }
    }
    es.indices.create(index_name, body=mappings)

尝试使用create、put_settings和put_mappings方法创建索引。我希望索引能够创建。

rur96b6h

rur96b6h1#

你拼错了“analyzer”--你写的是“s”--“analyzer”。请求的其余部分看起来没问题。考虑在你的实现中添加Kibana,并用开发工具测试你的请求。这是纠正这些错误的一个非常简单的方法。这就是我发现这个拼写错误的原因。

相关问题