具有显式字段和字段属性的Elasticsearch query_string

时间:2015-09-03 23:18:04

标签: elasticsearch

如果我要创建这样的查询:

find_by(id: x)

"query": { "query_string": { "query": "User:mjohnst", "default_field": "Text", "fields": [ "Text", "ProcessedText" ], "default_operator": "and", "lowercase_expanded_terms": false } } - > query_string显式指定了一个字段,但query属性设置为其他字段,预期的行为是什么?会搜索fieldsUserText,还是只搜索ProcessedText

2 个答案:

答案 0 :(得分:1)

测试它的最简单方法是使用验证查询API:

curl "localhost:9200/test/doc/_validate/query?pretty&explain" -d '{
    "query": {
        "query_string": {
            "query": "User:mjohnst blah",
            "default_field": "Text",
            "fields": [
                "Text",
                "ProcessedText"
            ],
            "default_operator": "and",
            "lowercase_expanded_terms": false
        }
    }
}'

{
  "valid" : true,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "explanations" : [ {
    "index" : "test",
    "valid" : true,
    "explanation" : "filtered(+User:mjohnst +(Text:blah | ProcessedText:blah))->cache(_type:doc)"
  } ]
}

正如您所看到的,使用明确指定的字段mjonst的字词会针对此字段(User)进行搜索,将针对{{1}中的所有字段搜索不带字段的字词blah } list。

答案 1 :(得分:0)

在某些文档上对此进行了测试,它只返回与User

匹配的搜索文档