当前位置: 首页 > 面试题库 >

通过mongodb river在Elasticsearch中创建索引中的映射未生效

秦时铭
2023-03-14
问题内容

我正在尝试使用mongodb-
river使用以下命令在elasticsearch中为mongodb编制索引,但文档映射未生效。它仍然使用默认的分析器(标准)作为字段text

Mongodb-river 该文档指定了索引的创建,但是没有有关如何提供自定义映射的文档。这就是我尝试过的。是否有其他文档可以找到如何在使用mongodb-
river的过程中指定自定义分析器等。

curl -XPUT "localhost:9200/_river/autocompleteindex/_meta" -d '
{
    "type": "mongodb",
    "mongodb": {
        "host": "rahulg-dc",
        "port": "27017",
        "db": "qna",
        "collection": "autocomplete_questions"
    },
    "index": {
        "name": "autocompleteindex",
        "type": "autocomplete_questions",
        "analysis" : {
                "analyzer" : {
                     "str_search_analyzer" : {
                          "tokenizer" : "keyword",
                          "filter" : ["lowercase"]
                      },

                      "str_index_analyzer" : {
                         "tokenizer" : "keyword",
                         "filter" : ["lowercase", "ngram"]
                    }
                },
                "filter" : {
                    "ngram" : {
                        "type" : "ngram",
                        "min_gram" : 2,
                        "max_gram" : 20
                    }
                }
            }
    },
    "autocompleteindex": {
       "_boost" : {
            "name" : "po", 
            "null_value" : 1.0
       },
       "properties": {
                "po": {
                    "type": "double"
                },
                "text": {
                    "type": "string",
                    "boost": 3.0,
                    "search_analyzer" : "str_search_analyzer",
                    "index_analyzer" : "str_index_analyzer"
                }           
       }
    }
}'

如果我按全字词搜索,但不匹配任何子字符串,则查询返回正确的结果。同样,增强因子没有显示出其效果。

我究竟做错了什么 ??


问题答案:

您必须首先使用索引设置(分析器)创建索引:

"analysis" : {
            "analyzer" : {
                 "str_search_analyzer" : {
                      "tokenizer" : "keyword",
                      "filter" : ["lowercase"]
                  },

                  "str_index_analyzer" : {
                     "tokenizer" : "keyword",
                     "filter" : ["lowercase", "ngram"]
                }
            },
            "filter" : {
                "ngram" : {
                    "type" : "ngram",
                    "min_gram" : 2,
                    "max_gram" : 20
                }
            }
        }

然后,您可以为您的类型定义一个映射:

"autocomplete_questions": {
   "_boost" : {
        "name" : "po", 
        "null_value" : 1.0
   },
   "properties": {
            "po": {
                "type": "double"
            },
            "text": {
                "type": "string",
                "boost": 3.0,
                "search_analyzer" : "str_search_analyzer",
                "index_analyzer" : "str_index_analyzer"
            }           
   }
}

只有这样,您才能创建河流:

curl -XPUT "localhost:9200/_river/autocompleteindex/_meta" -d '
{
"type": "mongodb",
"mongodb": {
    "host": "rahulg-dc",
    "port": "27017",
    "db": "qna",
    "collection": "autocomplete_questions"
},
"index": {
    "name": "autocompleteindex",
    "type": "autocomplete_questions"} }

有帮助吗?



 类似资料:
  • 问题内容: 我正在努力完成索引创建这一简单任务,目标是使用分析器和字段映射创建索引。当我使用分析器创建索引时,我可以通过分析api调用与分析器通信,但是当我添加映射信息时,创建索引调用失败,并显示“字段[$ field]]找不到Analyzer [analyzer1]”,我创建了一个脚本来显示问题: 问题答案: 我相信您的问题是这些设置需要嵌套在JSON的一个节点内,而不是您所拥有的嵌套在一个节点

  • 问题内容: 我是elasticsearch的新手,并试图通过遵循文章https://www.elastic.co/blog/you-complete- me 来集成应用程序的自动完成功能。 我遵循以下方法进行相同操作。 活动班 objectmapper用于将事件对象转换为json字符串。这是插入文档的代码 转换代码 我想创建一个索引,并为name_suggest字段设置完成建议器。我怎样才能达到同

  • 问题内容: 我在elasticsearch网站上找到了一篇文章,描述了如何“在不停机的情况下重新编制索引”,但是每次引入需要自定义映射的新元素时,这实际上是不可接受的(http://www.elasticsearch.org/blog/changing- 零停机时间映射/ ) 有谁知道为什么我不能为Elasticsearch中的现有索引创建映射,而是为新类型创建映射?该类型尚不存在,为什么不呢?也

  • 我正在尝试使用logstash配置在kibana中可视化mongodb数据。下面是我的配置。我在终端中得到一些输出,它永远循环。我看不到由配置文件中提到的名称创建的任何索引,如果索引是生成的,也没有任何数据。在discover选项卡中没有匹配的结果。如何在Kibana中使配置可视化数据? http://localhost:9200/ayesha_logs/_search?漂亮 终端日志:D,[20

  • 问题内容: 我在一个网站中使用,其中我从中索引了数据。 这很好。但目前,我必须在字段中搜索的完全匹配项。目前,如果我搜索其条目,也会给出的结果。我找到了此链接,并且看到了需要在数据上添加的elasticsearch文档。我的问题是如何在当前情况下在数据上添加映射?还是有更好的方法呢? 问题答案: 删除现有索引 删除现有的河流配置索引 创建映射到索引 完成这些步骤后,将river插件配置同步mong

  • 我正在阅读文档,碰巧阅读了多个索引的创建和在多个索引上搜索的能力,以及在Elasticsearch中搜索特定搜索的可能性。 例如,我有两个索引,如释放区和工作区。我可以通过给http://localhost:9200/_search?pretty=true搜索,这将在所有索引中搜索 我可以专门搜索http://localhost:9200/releasedArea,工作区/\u搜索?漂亮=真。 因