我正在尝试索引stackoverflow数据。首先,我使用指定的映射和设置创建一个索引。
@classmethod
def create_index_with_set_map(cls, name, elasticsearch):
"""
create index with default mappings and settings(and analyzer).
Argument:
name -- The name of the index.
elasticsearch -- Elasticsearch instance for connection.
"""
mappings = "mappings": {
"properties": {
"Body": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}}}
settings = {
"analysis": {
"analyzer": {
"default": {
"type": "whitespace"
}
}
}
}
body = {
"settings": settings,
"mappings": mappings
}
res = elasticsearch.indices.create(index=name, body=body)
print(res)
然后我尝试批量索引我的文档:
@classmethod
def start_index(cls, index_name, index_path, elasticsearch, doc_type):
"""
This function is using bulk index.
Argument:
index_name -- the name of index
index_path -- the path of xml file to index
elasticsearch -- Elasticsearch instance for connection
doc_type -- doc type
Returns:
"""
for lines in Parser.xml_reader(index_path):
actions = [
{
"_index": index_name,
"_type": doc_type,
"_id": Parser.post_parser(line)['Id'],
"_source": Parser.post_parser(line)
}
for line in lines if Parser.post_parser(line) is not None
]
helpers.bulk(elasticsearch, actions)
给定错误:('500个文档未能索引.', [{'索引':{'_index':'sof-问题-答案2','_type':'Stackoverflow','_id':1','status':400,'错误':{'type':'illegal_argument_exception','原因':'Mapper for[Body]与现有的映射冲突:\n[mapper[Body]有不同的[分析器]]'}, '数据':...}
它看起来像sof-quess-esser2
索引已经使用不同的分析器创建,可能使用默认的标准分析器
。
如果您通过kibana运行命令GET sof-question-answer2/u mapping,您将看到Body
字段没有空格。
为了解决这个问题,您必须删除索引,更新映射,并重新索引数据(如果有)。
问题内容: 也许我缺少一些简单的东西,但仍然无法弄清楚以下内容: 从ES 6.x开始,该字段已弃用,建议使用说明(https://www.elastic.co/guide/en/elasticsearch/reference/current/copy- to.html )。 但是,给我的印象是,您需要显式指定要复制到自定义字段的字段。但是,如果我使用动态映射,则我不事先知道字段,因此不能使用? 我
我有一个文档,我希望将其存储在ElasticSearch中,并能够对其运行查询,但我认为文档结构可能格式不正确,因此我无法进行有效的查询。 该文档试图是通用的,因此具有一组重复结构。 例如: 注意:我简化了这个例子,就像在真实的文档中一样,重复结构有大约7个字段,其中3个字段将明确标识“类型”。 从上面的示例中,我看不到如何编写映射,因为“值”可以是: 整数 IP地址 只需要用空格标记的字段 约会
问题所在 我是elasticsearch的新手,我想了解动态映射和重新索引文档之间的关系。 根据我的实验,当动态映射打开时,文档的重新索引是自动完成的。这意味着如果向文档中添加新字段,它将自动被索引。 TEST1-带映射的索引 TEST2-没有映射的索引
我对弹性搜索一无所知。所以,如果这是一个愚蠢的问题,请原谅我,我的问题可能已经在其他地方得到了回答,但我找不到。我想使用弹性搜索作为我的网络中PDF和docx的搜索引擎。我使用fscrawler将PDF文件吸收到弹性搜索中。因为我要摄取的文档是几种语言的,所以我想使用n-graming进行词干分析。为此,我想像这样更新我的映射 现在我收到了这个错误信息 {“error”:{“root_cause”
问题内容: 大家好,我正在尝试创建架构测试。 我收到以下错误 请帮助我解决此错误 问题答案: 您快到这里了,只是缺少了一些东西: 更新 如果您的索引已经存在,您还可以像这样修改映射: 更新 : 从ES 7开始,已删除映射类型。您可以在这里阅读更多详细信息
我目前正在使用ElasticSearch(PHP客户端)构建一个电子商务系统搜索,但遇到了一个问题 我存储的数据是简单文本(如产品名称)和列表(如颜色、大小)的混合体 我遇到的问题是当产品没有任何颜色时 我有以下字段 所以当我发送一个产品时,它看起来是这样的 这就像预期的一样,但是当我尝试发送这样的东西时 它抛出了一个错误: {“error”:{“root_cause”:[{“type”:“map