我有两个索引my_index_1
和my_index_2
。在这些索引中,我有以下文档类型:
my_index_1
:
my_index_2
:
每种类型都有不同的字段。
我的问题: 在任何一个甚至两个索引的任何类型的任何字段中查询字符串“abc”的最佳方法是什么?
我在文档中没有看到任何便于进行此类搜索的内容。是否有类似的东西:
$ curl -XPOST 'localhost:9200/_search?pretty' -d '
{
"query": { "match": { *: "abc" } }
}'
提前感谢您提供的任何帮助。
答案 0 :(得分:8)
query_string
query或match
query将是您正在寻找的内容。
default_field
中未指定任何内容,则{p> curl -XPOST 'localhost:9200/_search?pretty' -d '{
"query": { "query_string": { "query": "abc" } }
}'
将使用特殊_all
field,这样效果会很好。
match
使用_all
,您也可以指定curl -XPOST 'localhost:9200/_search?pretty' -d '{
"query": { "match": { "_all": "abc" } }
}'
。
query_string
请注意,使用match
时,您可以使用通配符,您可以使用import jsmash.Tools;
答案 1 :(得分:2)
我认为您可以将_all用于此目的
试试这个
$ curl -XPOST 'localhost:9200/_search?pretty' -d '
{
"query": { "match": { "_all": "abc" } }
}'
您也可以使用query_string
,因为它默认搜索_all
。
答案 2 :(得分:2)
GET /_search
{
"query": {
"multi_match" : {
"query": "Will Smith",
"fields": [ "important_field^5", "less_important^2", "title", "*_name" ]
}
}
}
支持字段名称中的通配符,并使用^#语法提高字段的重要性
从7.3版开始: 如果未提供任何字段,则multi_match查询默认为index.query.default_field索引设置,而默认设置为*。 *提取映射中符合词条查询条件的所有字段,并过滤元数据字段。然后将所有提取的字段组合起来以构建查询。
另一种选择是Query string query
GET /_search
{
"query": {
"query_string" : {
"query" : "(new york city) OR (big apple)",
"default_field" : "content"
}
}
}
default_field (可选,字符串)如果查询字符串中未提供任何字段,则为您要搜索的默认字段。
默认为index.query.default_field索引设置,其默认值为*。
答案 3 :(得分:0)
试试这个以获得所有索引和所有字段的结果:
GET _all/_search
{
"query" : {
"multi_match": {
"query": "abc",
"fields": []
}
}
}