每次为elasticsearch标记化的字段的相同值

n9vozmp4  于 2023-10-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(77)

我有一个用例,其中在ElasticSearch集群的每个文档中都有一个字段,在大多数情况下具有相同的值。我必须在这个字段上使用随输入搜索。我想检查在标记化过程中,如果多个文档中的字段值相同,比如100个文档中的字段X的值是“ABC”,是否为每个文档生成标记?希望确保我们不会因此更改而大幅增加elasticsearch集群大小

w8f9ii69

w8f9ii691#

一个很简单的测试...测试:-)
这里有一个快速的例子,向您展示它是如何工作的。首先,我们创建一个带有单个completion字段的测试索引,并在其中索引一个文档。注意,它的行为与search_as_you_type字段类型相同。

PUT test 
{
  "mappings": {
    "properties": {
      "text": {
        "type": "completion"
      }
    }
  }
}

POST test/_bulk
{"index":{}}
{"text": "Lorem ipsum dolor"}

在此之后,让我们检查索引的完成统计:

GET test/_stats?filter_path=**.completion

=> Returns
{
  "_all" : {
    "primaries" : {
      "completion" : {
        "size_in_bytes" : 128
      }
    },
    "total" : {
      "completion" : {
        "size_in_bytes" : 256
      }
    }
  },
  "indices" : {
    "test" : {
      "primaries" : {
        "completion" : {
          "size_in_bytes" : 128
        }
      },
      "total" : {
        "completion" : {
          "size_in_bytes" : 256
        }
      }
    }
  }
}

然后,索引更多具有完全相同内容的文档

POST test/_bulk
{"index":{}}
{"text": "Lorem ipsum dolor"}
{"index":{}}
{"text": "Lorem ipsum dolor"}
{"index":{}}
{"text": "Lorem ipsum dolor"}
... 100 times ...
{"index":{}}
{"text": "Lorem ipsum dolor"}

让我们再次获得统计数据,猜猜看,堆使用率增加,这应该可以回答您的问题:

GET test/_stats?filter_path=**.completion

=> Returns
{
  "_all" : {
    "primaries" : {
      "completion" : {
        "size_in_bytes" : 665
      }
    },
    "total" : {
      "completion" : {
        "size_in_bytes" : 1330
      }
    }
  },
  "indices" : {
    "test" : {
      "primaries" : {
        "completion" : {
          "size_in_bytes" : 665
        }
      },
      "total" : {
        "completion" : {
          "size_in_bytes" : 1330
        }
      }
    }
  }
}

相关问题