2

我正在尝试使用弹性搜索来搜索产品。例如,如果产品是汽车,它将有一些字段,例如“颜色”、“品牌”、“型号”、“公里”……如果是衣服,它将只有“颜色”、“尺寸”、 ...我想用弹性索引所有这些信息,以便能够搜索公里在 aaa km 和 bbb km 之间的汽车,和/或 xxxx 型号,与衣服或任何其他产品相同。

如何在 elasticsearch 中创建这样的字段?我希望所有产品都在同一个索引中,这样用户就可以搜索所有产品,而且如果用户搜索一个产品类型,那么他应该能够根据这种产品指定更多的细节。

我在考虑数组字段,但这是否意味着所有产品都将具有对应于所有类型产品的所有字段,即使某些字段与某些产品不相关(即衣服会有 km 字段??)?或者是否可以在索引上只放置与每个产品相对应的信息?

谢谢

4

1 回答 1

0

你可以使用类型。创建一个名为 car 的类型,其中包含颜色、品牌、型号、k 等字段,然后创建一个名为cloth 的类型,其中包含颜色、尺寸等字段。

一个索引可以有多种类型。以下两个链接可能会对您有所帮助:

  1. 创建索引

  2. 创建类型并映射到索引

您可以轻松地跨类型搜索,以便您可以发出这样的搜索以返回该索引中所有类型的所有文档:

curl -XGET http://localhost:9200/_search?pretty=true -d '{"query":{"matchAll":{}}}'

附加信息 -跨类型搜索

拥有一个数组字段不是一个好主意,因为您不会利用弹性搜索的能力来索引半结构化文档。

一切顺利。

于 2013-06-24T20:41:02.633 回答