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

为什么将Elasticsearch“ not_analyzed”字段拆分为术语?

宇文鸿畴
2023-03-14
问题内容

我的映射定义中包含以下字段:

...
"my_field": {
  "type": "string",
  "index":"not_analyzed"
}
...

当我索引用的有价票证my_field = 'test-some-another'该值被分成3个术语:testsomeanother

我究竟做错了什么?

我创建了以下索引:

curl -XPUT localhost:9200/my_index -d '{
   "index": {
    "settings": {
      "number_of_shards": 5,
      "number_of_replicas": 2
    },
    "mappings": {
      "my_type": {
        "_all": {
          "enabled": false
        },
        "_source": {
          "compressed": true
        },
        "properties": {
          "my_field": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      }
    }
  }
}'

然后我索引以下文档:

curl -XPOST localhost:9200/my_index/my_type -d '{
  "my_field": "test-some-another"
}'

然后,我将插件https://github.com/jprante/elasticsearch-index-
termlist
与以下API结合使用:
curl -XGET localhost:9200/my_index/_termlist 这将给我以下响应: ``

{"ok":true,"_shards":{"total":5,"successful":5,"failed":0},"terms": ["test","some","another"]}

问题答案:

通过运行以下命令验证映射是否已真正设置:

curl localhost:9200/my_index/_mapping?pretty=true

创建索引的命令似乎不正确。它不应包含"index" : {为根元素。试试这个:

curl -XPUT localhost:9200/my_index -d '{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 2
  },
  "mappings": {
    "my_type": {
      "_all": {
        "enabled": false
      },
      "_source": {
        "compressed": true
      },
      "properties": {
        "my_field": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}'


 类似资料:
  • 问题内容: 是否可以将现有字段的属性从修改为? 如果没有,我该怎么办才能将我所有的文件保存起来? 我无法删除映射(因为所有文档都将消失),并且需要该旧字段进行分析。 问题答案: 不能修改现有字段,但是,您可以创建其他字段或子字段添加到您的领域。 我要使用后一种解决方案。因此,首先,将一个新的子字段添加到您现有的字段中,如下所示: 上面,我们已经添加了子场称为(被分析)现有的(这是) 接下来,我们需

  • 问题内容: 假设我有一个映射中指定的字符串字段。如果我随后添加到映射,ElasticSearch会重复存储吗?我对字段的了解是,它们不是通过分析器运行的,索引 为 ,但是客户端可以对其进行匹配。因此,如果一个字段既是和,则可能导致ElasticSearch保留该字符串的两个副本。 我的问题: 如果将字符串字段同时存储为和,是否将重复存储该字符串? 我希望这很清楚。谢谢! 问题答案: 您正在混合使用

  • 问题内容: 我有一个表字段,其中包含用户的姓氏和名字。是否有可能分裂成那些2场,? 所有记录的格式均为“名字的姓氏”(不带引号,中间还有空格)。 问题答案: 不幸的是,MySQL没有分割字符串功能。但是,您可以为此创建一个用户定义的函数,例如以下文章中描述的函数: Federico Cargnelutti撰写的MySQL Split String Function 使用该功能: 您将可以按照以下方

  • 问题内容: 我正在尝试将结果分组,以便将它们按类别分组。 上面的代码创建了聚合,但是我遇到了一个问题,其中 带有连字符的字符串 被分隔并放入了自己的“ Bucket”中。 从我已阅读的内容中,我需要更改映射设置,以便不分析类别,但是我不确定如何执行此操作。写入Elasticsearch或阅读时完成了吗?究竟如何设置? 问题答案: 要使用Java API应用Elasticsearch映射, 步骤1)

  • 我做了很多操作,将数字拆分为单独的数字,将数字放入ArrayList并将这些数字一个接一个地传递给其他ArrayList以进行进一步的操作,直到temList为空-然后是下一个比前一个大的数字。 我想知道哪种方法更快。 这两种方法的共同点是: 然后我可以通过两种方式将这些数字逐个传递给其他ArrayList mainList,并在之后删除它们:方式1: 方式2: 哪种方法更快?考虑到这是数十亿次操

  • 问题内容: 我已经编写了这段代码,用于拆分字符串并将其存储在字符串数组中:- 但是,我添加了[az],因为我想处理一些缩写问题。但是随后我的结果显示为: 此外,当埃弗里特(Everett)试图指导他们进行基础数学训练时,他们被证明是毫无反应的 我看到丢失了split函数中指定的模式。对我来说,可以省略句号,但是丢失单词的最后一个字母会打乱其含义。 有人可以帮助我吗?此外,有人可以帮助我解决缩写吗?