我一直在阅读这两个关于属性和字段的文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html
我理解具体文档中描述的每个属性的用途(意味着我理解属性的用途,我理解多字段的用途),但我并不真正看到它们实际用途之间的区别。。例如,在fields文档中的代码片段中,显示了如何定义多字段:
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"city": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
}
如果我把“字段”这个词换成“属性”,效果会完全一样吗?
根据Elasticsearch留档的"字段":
为了不同的目的,以不同的方式索引同一个字段通常是有用的。这就是多领域的目的。例如,字符串字段可以映射为全文搜索的文本字段,以及排序或聚合的关键字字段:
考虑到上面的语句和你的JSON,如果你想使用“城市”作为文本和“关键字”,你需要在“字段”下声明另一种类型,这样你就可以像
"sort": {
"city.raw": "asc"
}
如果在您的示例中仅将字段
替换为属性
,那么正如Biplab所说,Elasticsearch将为您提供一个例外:
"reason": "Failed to parse mapping [doc]: Mapping definition for [city] \
has unsupported parameters: [properties : {raw={type=keyword}}]",
属性
基本上声明您将在这里发送一个复杂的JSON对象。
使用属性
而不是示例中的字段
的最接近映射如下所示:
PUT my_index_with_properties
{
"mappings": {
"doc": {
"properties": {
"city": {
"properties": {
"name": {
"type": "text"
},
"name_keyword": {
"type": "keyword"
}
}
}
}
}
}
}
您需要插入的文档如下所示:
POST my_index_with_properties/doc
{
"city": {
"name": "New York",
"name_keyword": "New York"
}
}
请注意,“纽约”
重复两次。
在这里,您可以使用match
发出全文查询:
POST my_index_with_properties/doc/_search
{
"query": {
"match": {
"city.name": "york"
}
}
}
或者使用术语
查询进行精确搜索:
POST my_index_with_properties/doc/_search
{
"query": {
"term": {
"city.name_keyword": "New York"
}
}
}
请注意,我们正在查询不同的字段。
使用带有字段的示例
,当您发布它时,我们可以发送如下所示的文档:
POST my_index/doc
{
"city": "New York"
}
正如您所看到的,没有明确的数据重复。但事实上,Elasticsearch的背后是为您进行复制。
现在我们可以使用city
字段进行全文搜索:
POST my_index/doc/_search
{
"query": {
"match": {
"city": "york"
}
}
}
不过,它对精确搜索不起作用。以下查询将不返回任何内容,因为字段city
已标记化和小写,而术语
查询的参数未标记:
POST my_index/doc/_search
{
"query": {
"term": {
"city": "New York"
}
}
}
这个精确的搜索查询将代替工作:
POST my_index/doc/_search
{
"query": {
"term": {
"city.keyword": "New York"
}
}
}
因为对于映射中的
字段
,我们刚刚要求Elasticsearch再次将该City
字段索引为关键字
,要使用该字段,我们必须键入city.keyword
。
因此,作为结论,
字段
只是告诉Elasticsearch您希望它以几种不同的方式处理相同的数据字段的一种方式。例如,在为不同语言的文本编制索引时,它可能很方便。
我目前正试图理解字段之间的差异(https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html)和属性(https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html). 它们都以某种方式定义为类型/映射
问题内容: 对于“属性”和“属性”之间的区别,我通常感到困惑,并且找不到很好的资源来简洁地详细说明这些区别。 问题答案: 属性是一种特殊的属性。基本上,当Python遇到以下代码时: 它查找中,然后检查,看它是否有一个,或方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该对象(就像对其他任何属性一样),还会调用该方法(因为我们一直在进行查找),并返回该方法返回的内容。 有关Py
问题内容: 谁能告诉我Javascript事件中和属性之间的确切区别以及示例,以及在哪种情况下使用哪个属性? 问题答案: 基本上,事件默认情况下会冒泡,因此两者之间的区别是: 是触发事件的元素(例如,用户单击) 是事件侦听器附加到的元素。
问题内容: 可以在这里找到代码: 我发现有内标记,也有内标签。它们都是必需的吗?(在这种情况下,CSS似乎覆盖了HTML属性)关于它们之间的区别是否有任何解释? 问题答案: 我检查了文档,但是它们并不清楚如果同时设置了它们。 那藏在这里的某个地方: UA可以选择使用HTML源文档中的表示属性。如果是这样,则将这些属性转换为对应的CSS规则,其特异性等于0,并且将其视为在作者样式表的开头插入。因此,
本文向大家介绍综合属性和继承属性之间的区别,包括了综合属性和继承属性之间的区别的使用技巧和注意事项,需要的朋友参考一下 合成属性和继承属性都是语言语义的一部分,该语言为其构造提供含义,例如标记和语法结构。语义有助于解释符号,符号的类型及其相互之间的关系,其分析可判断源程序中构造的语法结构是否衍生出任何含义。现在,基于属性的特征,我们可以区分综合属性和继承属性 以下是合成属性和继承属性之间的重要区别
问题内容: 从一些初始教程中,我看到属性属于类,并且本质上是C ++世界中使用的“全局变量”(在几年前进行了编码)。我也将变量视为更多的“本地”实体,仅在方法中使用/存储信息。 然后我遇到了这个Quora线程:https : //www.quora.com/Apple-Swift-programming-language/What-is-the-difference- between-a-prop