当前位置: 首页 > 知识库问答 >
问题:

所有属性上的弹性搜索索引?

商飞航
2023-03-14

我是弹性搜索新手,并且已经完成了类似mykong教程的基本教程

我对创建任何文档的一部分有疑问

创建操作示例插入包含 /mkyong/posts/1001和以下请求数据的新文档:

    {
      "title": "Java 8 Optional In Depth",
      "category":"Java",
      "published_date":"23-FEB-2017",
      "author":"Rambabu Posa"
    }

问题1:-ES是否会在上述文档的所有属性上创建反向索引,即默认情况下的标题/类别/已发布/作者,并提供全文搜索,还是需要明确提及?

问题2:-在上述示例中,我们已经有了唯一的\u id,即1001。如果我已经将其存储在DB中并生成ID,那么这很好。如果我需要通过ES引擎生成ID,并且没有任何DB,该怎么办?

更新时间:-

已从指定在ElasticSearch中索引哪些字段中获得问题1的答案

共有1个答案

武功
2023-03-14

问题1:-是的,默认情况下,ES会将您的字段索引两次,作为两种不同的类型。一次作为“文本”,一次作为“关键字”,作为像“title.keyword”这样的子字段。“文本”类型通过语言分析器运行,以支持标准搜索案例(删除停用词、词干词等)。“关键字”类型不做任何更改,并按原样索引数据,支持精确匹配和聚合。您可以明确告诉ES任何字段的映射,但如果您不这样做,这是默认行为。

以下是一些关于文本与关键字行为的信息:https://www.elastic.co/blog/strings-are-dead-long-live-strings

问题2:-ES将自动为您在名为“\u ID”的字段中索引的每个文档创建自己的内部ID。从技术上讲,您可以用自己的ID来替换它,但通常您不想这样做,因为这会影响性能,因为它会使ES的哈希算法将数据预成型分散得很差。通常,最好只是在文档中添加您想要的任何ID作为新字段,并让ES为您编制索引,最好是作为关键字类型。

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-id-field.html

 类似资料:
  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa

  • 我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 我刚加入弹性搜索公司。而不知道如何在JSON请求中对索引和an类型发出正确的请求?(所以我不想像localhost:9200/myindex/mytype/_search那样在URL中使用索引和类型,而是向localhost:9200/_search发出JSON请求) 我试过这样的东西。但我得到的结果是'AAA'索引而不是'BBB'索引。如何只从bbb索引得到结果或者根本没有结果?