Tôi đã làm việc với ElasticSearch từ vài tháng trước, nhưng vẫn thấy nó phức tạp khi tôi phải vượt qua một truy vấn phức tạp.Làm cách nào để sử dụng thông số truy vấn ElasticSearch Query (truy vấn DSL) cho nhiều loại?
Tôi muốn chạy các truy vấn mà sẽ phải tìm kiếm nhiều "loại" và từng loại phải được tìm kiếm với "bộ lọc" của riêng mình, nhưng cần phải có kết hợp "đã tìm kiếm kết quả"
Ví dụ:
Tôi cần tìm kiếm tài liệu "loại người dùng" là bạn bè của tôi và đồng thời tôi phải tìm kiếm tài liệu "loại đối tượng" mà tôi thích, theo từ khóa được cung cấp.
HOẶC
Truy vấn có cả "AND" và "KHÔNG" khoản
truy vấn Ví dụ:
$options['query'] = array(
'query' => array(
'filtered' => array(
'query' => array(
'query_string' => array(
'default_field' => 'name',
'query' => $this->search_term . '*',
),
),
'filter' => array(
'and' => array(
array(
'term' => array(
'access_id' => 2,
),
),
),
'not' => array(
array(
'term' => array(
'follower' => 32,
),
),
array(
'term' => array(
'fan' => 36,
),
),
),
),
),
),
);
như truy vấn này có nghĩa là để tìm kiếm cho người dùng access_id = 2 , nhưng không được có người theo dõi id 32 và người hâm mộ của id 36
nhưng điều này không hoạt động ..
Edit: truy vấn Modified
{
"query": {
"filtered": {
"filter": {
"and": [
{
"not": {
"filter": {
"and": [
{
"query": {
"query_string": {
"default_field": "fan",
"query": "*510*"
}
}
},
{
"query": {
"query_string": {
"default_field": "follower",
"query": "*510*"
}
}
}
]
}
}
},
{
"term": {
"access_id": 2
}
}
]
},
"query": {
"field": {
"name": "xyz*"
}
}
}
}
}
bây giờ sau khi chạy truy vấn này, tôi đang nhận hai kết quả, một với theo: "34.518" & fan: "510" và thứ hai với người hâm mộ: "34", nhưng nó không phải là kết quả thứ hai trong kết quả.
Bất kỳ ý tưởng nào?
Bộ lọc "không" luôn có trong bộ lọc "và" hay chỉ trong trường hợp này là –
Xin chào @DrTech, tôi vừa chỉnh sửa câu hỏi, vui lòng kiểm tra. –
Câu hỏi đã chỉnh sửa của bạn giới thiệu các sự cố khác. Tôi khuyên bạn nên xem qua bản trình bày mà tôi đã liên kết đến - nó giải thích sự khác biệt giữa các điều khoản và văn bản cũng như loại truy vấn hoặc bộ lọc để sử dụng ở đâu. – DrTech