Ren*_* Xu 6 arrays elasticsearch
我有一个文件就像一个数组
DOC1
{
"item_type":"bag",
"color":["red","blue","green","orange"]
}
Run Code Online (Sandbox Code Playgroud)
DOC2
{
"item_type":"shirt",
"color":["red"]
}
Run Code Online (Sandbox Code Playgroud)
当我进行multi_match搜索时
{
"query": {
"multi_match": {
"query": "red bag",
"type": "cross_fields",
"fields": ["item_type","color"]
}
}
}
doc2的得分要高得多,我明白,如果我在doc1中有更多的颜色,那么颜色就越少得分越高.
那么有没有一种方法可以让Elasticsearch为数组字段评分相同,无论有多少项?
如果您不想在评分期间考虑字段长度 (fieldNorm),您可以禁用映射中字段的规范。
例如,上面示例的映射将是
{
"properties": {
"item_type": {
"type": "string"
},
"color": {
"type": "string",
"norms": {
"enabled": false
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
来自elasticsearch权威指南的这篇文章很好地洞察了字段长度规范。