我已经建立了索引文档,每个文档都有100多个字段,每个文档都使用Edge gram标记器进行了分析,以支持自动建议。我确实需要在所有字段上进行搜索的自由文本搜索。当我尝试这样做时,搜索也会发生具有自动完成分析功能的字段(例如Data.autocomplete_analyzed)。我必须通过仅搜索以“文本”(例如数据)类型分析的字段来限制此情况。在1.索引时间2.查询时间中是否有这样做的方法。 映射文件:
"mappings": {
"_doc": {
"properties": {
"Data": {
"type": "text",
"fields": {
"autocomplete_analyzed": {
"type": "text",
"analyzer": "autocomplete"
},
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
搜索查询:
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "aim",
"type": "phrase",
"slop": "2",
"fields": []
}
},
{
"multi_match": {
"query": "aim",
"fuzziness": "1",
"fields": []
}
}
],
"minimum_should_match": 1
}
答案 0 :(得分:0)
在查询时间内,您可以使用源过滤来选择所需的字段。
GET /_search
{
"_source": [ "obj1.*", "obj2.*" ],
"query" : {
"term" : { "user" : "kimchy" }
}
}
如果您使用query_string进行搜索,则可以使用字段
GET /_search
{
"query": {
"query_string": {
"query": "this AND that OR thus",
"fields": [
"docfilename",
"filepath",
"singlewordfield"
]
}
}
}