世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
问 :flattened field type有什么作用?
答 :将object类型的叶子节点作为keyword处理
问 :flattened 可以支持的查询类型有哪些?
答 :
term, terms, and terms_set
prefix
range
match and multi_match
query_string and simple_query_string
exists
问 :flattened 如何使用?
答 :
# flattened
# 配置项 :
# 1. boost :默认1.0
# 2. depth_limit :默认20
# 3. doc_values :是否加入doc_values,默认true
# 4. eager_global_ordinals :刷新时加载全局序数,默认false,聚合时使用
# 5. ignore_above :叶子值超出一定长度不索引,默认没有限制
# 6. index :是否索引,默认true
# 7. index_options :为评分存储的内容,默认docs
# 8. null_value :空值替换,默认null
# 9. similarity :评分算法,默认BM25
# 10. split_queries_on_whitespace :输入数据是否空格拆分,默认false
PUT /flattened_test
{
"mappings" : {
"properties" : {
"user" : {
"type" : "flattened"
}
}
}
}
GET /flattened_test/_mapping
# 结果
{
"flattened_test" : {
"mappings" : {
"properties" : {
"user" : {
"type" : "flattened"
}
}
}
}
}
POST /flattened_test/_doc
{
"user" : {
"age" : 18,
"name" : {
"first" : "hello",
"last" : "good"
}
}
}
GET /flattened_test/_search
{
"query" : {"term" : {"user.name.first" : "hello"}}
}
# 结果
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 0.25069216,
"hits" : [
{
"_index" : "flattened_test",
"_type" : "_doc",
"_id" : "4Wtl8HcBnJvha9PMxIy4",
"_score" : 0.25069216,
"_source" : {
"user" : {
"age" : 18,
"name" : {
"first" : "hello",
"last" : "good"
}
}
}
},
{
"_index" : "flattened_test",
"_type" : "_doc",
"_id" : "4mto8HcBnJvha9PMQIzI",
"_score" : 0.25069216,
"_source" : {
"user" : {
"age" : 18,
"name" : {
"first" : "hello",
"last" : "good"
}
}
}
}
]
}
}